《Scala编程》读书笔记1

Scala编程:函数式编程思想与应用

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是默认访问级别。

待续。。。。。。。。。。。

转载于:https://www.cnblogs.com/best-haozi/archive/2012/04/29/2476437.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值