
Scala教程
文章平均质量分 75
_否极泰来_
人是有命运的,文化属性和作用在不同人身上的自然规律决定了命和运,改变客观条件,才能改变命运。你是你自己的救世主!——遥远的救世主
展开
-
Scala教程(十一)Curry详解与模式匹配
curry函数:curry化的函数被应用了多个参数列表,而不是仅仅一个。case class匹配: Scala的case class使得对对象进行模式匹配变得非常方便,简单的来说,Scala的case class就是在普通的类定义前加case这个关键字,然后你可以对这些类来模式匹配。原创 2015-09-28 17:12:50 · 1658 阅读 · 0 评论 -
Scala教程(二十)For循环模式匹配与表达式
For循环模式匹配与表达式;1.1 模式匹配下的For循环;1.2 模式匹配下的赋值语句;1.3 模式匹配下的提取器;1.4 Scala中For表达式;1.5 For表达式查询过滤;原创 2015-11-11 17:39:48 · 2273 阅读 · 0 评论 -
Scala教程(八)文件操作
scala.io.source对象的getlines方法可以读取文件的所有行。scala中没有提供读取二进制文件的方法,需要使用Java类库,同样没有内建的对写入文件的支持,可以使用java.io.PrintWriter。原创 2015-09-23 17:32:12 · 2310 阅读 · 0 评论 -
Scala教程(九)正则表达式
什么是正则表达式:在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。正则表达式规定的一个特殊代码叫作它元字符(metacharacter)字符转义:如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\.例如:deerchao\.net匹配de原创 2015-09-23 17:46:21 · 5111 阅读 · 0 评论 -
Scala教程目录
1.Scala教程(一)走进Scala世界2.Scala教程(三)数组、元组、列表3.Scala教程(三)数组、元组、列表4.Scala教程(四)数组进阶实战5.Scala教程(五)Map、Tuple、Zip实战6.Scala教程(六)类、属性和对象字段7.Scala教程(七)package实战8.Scala教程(八)文件操作9.Scala教程(九)正则表达式10.Scala教程(十)函数与闭包详解11.Scala教程(十一)Curry详解与模式匹配12.Scala教程(十二)List原创 2015-11-12 11:17:55 · 2168 阅读 · 1 评论 -
Scala教程(十五)Scala的特性逆变与协变
covariant 协变: 使你能够使用比原始指定的类型的子类,如:C[+T]:如果A是B的子类,那么C[A]是C[B]的子类。contravariance 逆变: 使你能够使用比原始指定的类型的父类,如:C[-T]:如果A是B的子类,那么C[B]是C[A]的子类。Invariance 不变。你只能使用原始指定的类型,不能协变和逆变,如:C[T]:无论A和B是什么关系,C[A]和C[B]没有从属关系。原创 2015-10-27 23:26:10 · 983 阅读 · 0 评论 -
Scala教程(十三)Set、Map操作实战
Scala教程(十三)Set、Map操作实战原创 2015-10-14 11:54:05 · 5034 阅读 · 0 评论 -
Scala教程(十二)List操作高级进阶实战
List组成结构:数组由head tail两部分组成:head表示第一个元素,tail表示其它元素。:::操作符:list与list之间进行连接符:::List的foldLeft、foldRight、sort函数操作。ListBuffer、ArrayBuffer、Queue、Stack函数操作。原创 2015-10-13 16:43:43 · 7073 阅读 · 0 评论 -
Scala教程(十)函数与闭包详解
本地函数:函数式编程风格的一个重要设计原则:程序应该被解构成若干小的函数,每个完成一个定义良好的任务。单个函数经常很小。这种风格的好处是它给了程序员许多可以灵活组装成更复杂事物的建造模块。每个小块应该充分简化到足以单独理解。Scala中提供了可以把函数定义在另一个函数中。就好象本地变量那样,这种本地函数仅在包含它的代码块中可见。闭包: add函数首次调用参数值为:1,该变量在(x:Int) => x +more函数的函数体内被引用,该值赋值a。然后参数变量more从运行时的栈上被弹出来。接下来add原创 2015-09-24 21:17:29 · 7026 阅读 · 4 评论 -
Scala教程(七)package实战
定义包:Scala的代码采用了Java平台的完整的包机制,可以通过把package子句放在文件顶端的方式把整个文件内容放进包里。指定了package全文档的作用域。包对象:包对象可以包含类、对象和特征,但是不能包含函数的定义。隐式引用的包:Scala隐式地添加了一些引用到每个程序中。包的访问修饰符:package可以用访问修饰符private和protected做标记。这些修饰符把对成员的访问限制在代码确定的作用域中。原创 2015-09-22 16:58:47 · 2719 阅读 · 0 评论 -
Scala教程(十四)Scala泛型及约束实战
ClassTag[T]保存了泛型擦除后的原始类型T,提供给被运行时的。泛型参数类型限定:限定具体类的可以调用特定的方法。泛型视图限定:表示把传入不是Comparable[T]类型的 隐式传换 为Comparable[T]类型,Comparable[T]:为T下界,T:为Comparable[T]上界。上下文界定:上下文界定是隐式参数的语法糖。如:Ordering:可以进行隐式转化的T类型。Manifest关键字:数组在声明时必须要求指定具体的类型,在函数泛型是无法知道具体类型,通过Manifest关原创 2015-10-23 17:33:32 · 14915 阅读 · 3 评论 -
Scala教程(六)类、属性和对象字段
定义类:Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式和函数式的编程风格。在面向对象的语言有两个重要的概念:类(class)和对象(object也被称为实例—instance),其中类是对象的抽象。可以把类理解为模板,对象才是真正的实体。伴生对象:在Java或C++中即有实例方法又有静态方法。在Scala可以通过类与同名的“伴生”对象来达到同样的目的。类和它的伴生对象可以互相访问私有特性。它们必须在于同一个源文件中。scala继承(extends):子类继承父类的特征和行为,使得子类具有原创 2015-09-22 10:40:28 · 8372 阅读 · 1 评论 -
Scala教程(十七)Scala隐式类型转换详解
隐式方法:方法命名 :file为源方法名 2 目标方法名,例如:file2RichFile定义隐式转换的方法名。隐式转换必须有:implicit关键字,需要和参入参数类型一致。隐式参数:在参数前添加implicit关键字的参数。隐式类:在class关键字前带有implicit关键字的类。隐式对象:在object关键字前带有implicit关键字的伴生对象。原创 2015-11-03 17:46:49 · 5951 阅读 · 0 评论 -
Scala教程(十八)并发编程详解
Actor是一种基于事件的轻量级线程,使用Actor则需要关注操作数据的代码结构,因为减少了数据的共享。Actor的主要能力来源于消息传递,而不是采用阻塞调用的处理形式。如果创建直接或间接扩展 Actor的类,要确保对对象的所有调用都通过消息传递进行。Actor提供了并发程序与传统的基于锁(比如:Java)结构不同。Actor使我们更容易设计正确、没死锁或争用状况的程序。编写Actor并发程序,实现(trait)Actor特征,重写act方法,act方法与Java中的Runnable接口的run方法很原创 2015-11-05 15:26:00 · 1444 阅读 · 0 评论 -
Scala教程(十九)Scala界面GUI编程
Scala开发图形用户界面(GUI)的应用程序基于一个Scala库,该类库提供对Java的Swing框架的GUI类访问。该类库和它的下层的Swing类很像,隐藏了大部分的复杂度,使Scala开发图形用户界面开发变得易容。使用Swing编程,你需要从Scala的SwingAPI导入类。import scala.swing._在Java的GUI,容器是很重要图形界面开发的一种思想,同样在Scala中也提供了容器的概念。面板:用于容纳将构建的按钮、标签等组件。布局:使用Panel类的各种子类实现各种不同的布局原创 2015-11-06 17:02:36 · 6711 阅读 · 0 评论 -
Scala教程(二)基础语法
Scala教程(二)基础语法函数语法:定义函数:def关键字,函数名:max,括号():参数列表,:Int 表示返回结果,最外层的大括号{}:表示函数体匿名函数:不需要给每一个函数命名,正如你不需要给每个数字命名一样。以下是一个匿名函数:递归函数函数默认参数lazy关键字:使用lazy修饰一个val成员时,其赋值情况是在需要时才赋值的(byneed)因为Scala中成员与方法是等价的(除了private[this]成员)原创 2015-09-20 11:19:10 · 1685 阅读 · 0 评论 -
Scala教程(一)走进Scala世界
scala是运行在 Java 虚拟机 (Java Virtual Machine)之上,轻松实现和丰富的 Java类库互联互通。它既支持面向对象的编程方式,又支持函数式编程。它写出的程序像动态语言一样简洁,但事实上它确是严格意义上的静态语言。面向对象特性:Scala是一种纯面向对象的语言,每一个值都是对象。对象的数据类型以及行为由类和特征(Trait)描述。类抽象机制的扩展有两种途径。一种途径是子类继承,另一种途径是灵活的混入(Mixin)机制。这两种途径能避免多重继承的种种问题。函数式编程:Sca原创 2015-09-20 10:53:13 · 1776 阅读 · 0 评论 -
Scala教程(三)数组、元组、列表
Scala教程(三)数组、元组、列表Tuple(元组)结合多个固定元素数量在一起,使它们可以被传来传去作为一个整体。不像一个数组或列表,元组可以容纳不同类型的对象。元组的访问元素的索引是从1开始,而且是不可改变的。Array(数组),一种数据结,其中存储相同类型的元素的固定大小的连续集合。数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合。Map是键/值对的集合。任何值可以根据它的键进行检索。键是在映射唯一的,但值不是唯一的。映射也被称为哈希表。原创 2015-09-20 11:55:41 · 3252 阅读 · 0 评论 -
Scala教程(四)数组进阶实战
定义数组:所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。yield关键字:yield关键字 for 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。Scala 中 for 循环是有返回值的。如果被循环的是 Map,返回的就是 Map,被循环的是 List,返回的就是 List,以此类推。定义多维数组原创 2015-09-21 10:26:55 · 2193 阅读 · 2 评论 -
Scala教程(五)Map、Tuple、Zip实战
键/值对Map:键/值对的集合。任何值可以根据它的键进行检索。键是在映射唯一的,但值不一定是唯一的。映射也被称为哈希表。有两种类型的映射,不可变以及可变的。可变和不可变的对象之间的区别在于,当一个对象是不可变的,对象本身不能被改变。元组Tuple:tuple最主要是自动识别变量类型,遍历时从1开始,可以用空格或者点加占位符进行数据访问,截取大写字母后拼接以及获得tuple中的部分数据,不需要的用占位符代替。Zip操作:按照两个数组的序列进行匹配组成新得元素。原创 2015-09-21 11:15:00 · 1708 阅读 · 0 评论 -
Scala教程(十六)Scala复合类型与依赖注入详解
1.1 函数链式调用1.2 路径依赖:Scala的内部类比Java的内部类具有更多特性,因此Scala引入了路径依赖类型(Path-dependent type)的概念。像outer.Inner这样的类型就称为路径依赖类型。所谓路径,指的就是参考外部类所建立的实例的名称。 就outer.Inner这个类型来说,路径为outer。更重要的是,不同路径代表不同的类型。1.3 结构类型:结构类型又称之为鸭子类型,即:当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。1.4原创 2015-11-02 11:39:47 · 3155 阅读 · 0 评论