scala中集合的讲解

scala中定义List和定义ArrayList有什么区别(https://www.cnblogs.com/guoyu1/p/12091296.html)

1.scala学习:String 类型是不可变的,如果需要创建一个可以修改的字符串,可以使用 String Builder类
2.闭包:闭包是一个函数,返回值依赖于声明在函数外的一个或多个变量。eg:var factor=3 val multiplier=(i:Int)=>i*factor (这里我们引入一个自由变量factor,这个变量定义在函数外面,这样定义的函数变量multiplier 成为一个闭包,因为它引用到函数外面定义的变量,定义这个函数的过程是将自由变量捕获而构成一个封闭的函数)
3.scala集合分为可变集合和不可变集合
4.类是抽象的,不占用内存,而对象是具体的,占用存储空间。
5.scala 类可以带参数,object对象不能带参数。
6.scala trait(特征):相当于java的接口,实际上它比接口功能强大,与接口不同的是,它还可以定义属性和方法的实现。
7.scala lazy,当val 被申明为lazy时,它的初始化将被推迟,直到我们首次对它取值
8.for ... yield使用,在for循环中,可以使用yield关键字来产生一个新的集合
9.scala中数组,定长数组Array,变长数组ArrayBuffer
10.zip拉链操作,如果两个数组的元素个数不一致,使用后生成的数组的长度为较小的那个数组的元素个数
partition根据断言函数的返回值对列表进行拆分numbers.partition((i:Int)=>i%2==0)[可以被2整除的被分到一个分区,不能被2整除的被分到另一个分区]
find返回集合里第一个匹配断言函数的元素 numbers。find(_%3==0)
11.柯里化函数是把具有多个参数的函数转为一条函数链,每个节点上是单一参数
一下两个函数定义是等价的:
def add(x:Int,y:Int)=x+y
def add (x:Int)=(y:Int)=x+y //简写方式 def add(x:Int)(y:Int)=x+y 柯里化函数
12.scala中的高级特性:泛型类
calss GenericClass[T]{
//定义一个变量(这里的T就是泛型类,可以代表任意类型。_表示可以是任意值)
private var content:T=_
}

posted @ 2021-01-19 15:17  hulifang  阅读(185)  评论(0编辑  收藏  举报