1函数式编程思想
函数是第一变量:
函数方法无副作用,函数的唯一目的是计算并返回值。无副作用(有无返回值,无则有副作用)指函数只把输入值映射为输出值,而不是就地修改数据。
对象状态不可改变性
2 Scala中每个值都是对象,每种操作都是方法调用
Eg:
val s = Array[String](3)
println(s(1)) //此处s(1)实际调用s对象的apply方法,即s.apply(1)
s(2) = “s2” //此处调用s对象的update方法,即s.update(2,”s2”)
3 变量声明
Val变量,类似java中的final变量
Var变量,类似java中声明的普通变量
4“数组”
Array: 可变的同类对象序列。不同于java的方括号取元素,scala使用圆括号取元素。
List: 不可变的同类对象序列。
Eg:val list1 = List(1,2)
val list2=List(3,4)
val list3=list1:::list2 // 此处list2调用:::方法,参数为list1,使两个list叠加。
// 若List可变,此时list2=list3=(1,2,3,4)
// 实际上由于List的不可变,list2和list1均未改变,只有list3
//变为了(1,2,3,4)
//间接论证了函数方法的无副作用性。
reduceLeft方法使用实例:
val l = List(1,2,3,4)
val max = l.reduceLeft(
(a,b) = if (a>b) a else b
)
将传入的方法参数应用于list 的前两个元素,产生结果。再将方法参数应用于结果和下一个元素。直到list末尾。
Tuple: 元组,不可变的对象序列,元素类型可不相同
Eg: val pair=(99,”26gg”)
print(pair_1) //访问元组数据使用下划线加索引值
5 函数定义
Eg:
def max(x:int ,y:int) = if (x>y) x else y
若函数以冒号(:)结尾,则是右操作数的方法调用,参数为左操作数。
函数式风格,返回值不为Unit(void),若返回值为空,则函数的作用必然是某种副作用。
方法参数都是val,不能被重新赋值。
尽量避免使用返回语句(return)。
6 trait 特质
Scala trait :特质,类似java中的接口,
mix-in:混入或者扩展,类似java中对接口的引入混入实现
7类和对象
Scala对象公开成员的方法是不显示的指定任何修饰符,即public是默认访问级别。
待续。。。。。。。。。。。