scala学习(二)

学习scala,针对细节点,变量定义,数组使用等语言那就不再描述了。我们这里先来讨论一下函数式风格编程,相对于函数式风格的就是指令式风格编程了,scala两种风格都支持,java就是指令式风格的,作为java程序员,对于指令式风格来说是再也熟悉不过的了。对于函数式风格却是有其独到一处。 在指令式风格中,我们定义变量,通常都是用var,函数式风格多用val,很少用var。(这里的var和val的区别,在java里面就好比int i = 3和final int i =3一样,val定义之后是不可变的了)。我们先来看看一个指令式风格的例子: def printArgs(args: Array[String]): Unit = { var i = 0 while (i < args.length) { println(args(i)) i += 1 } } 重构成更函数式风格,例如,像这样: def printArgs(args: Array[String]): Unit = { for (arg <- args) println(arg) } 或这样: def printArgs(args: Array[String]): Unit = { args.foreach(println) } 重构后(更函数式)的代码比原来(更指令式)的代码更简洁,明白,也更少机会犯错,作为写惯指令式的java程序员,看到函数式风格,特别是实现的很简洁概要的,确实有点想叫好的感觉。 函数式风格很重要两点,摒弃var和没有副作用。什么是副作用,举java一个例子,BigDecimal类就是一个没有副作用的,里面的方法都是不改变原有对象,返回全新对象。函数式风格,摒弃var,多用val也是如此,这些对于多线程编程也是关键。顺便说一下erlang吧,因为多核时代的到来,erlang这门语言也开始红火起来,scala和erlang还是有点瓜葛的,后面的学习中,我们可以进一步讨论,scala的异步编程如此的强大,就是学习了erlang。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值