Scala编程思想
作者布鲁斯 埃克尔(Bruce Eckel),也是Java编程思想的作者,本书是入门读本,和之前的著作不同的是,这本书是由原子概念组合而成,是Scala的原子特性的集合,掌握了这些基本原理,也就学会了Scala的精髓了。同样这本书还可以作为一个参考读本,当你对其中一个特性不是特别理解的时候,随手翻阅,便可以快速掌握其中的思想。
值、数据类型、变量、表达式
val name:type = initialization
val name = initialization
var name = initializaion//变量定义
语句改变状态,表达式用于表达,即表达式会产生结果。Scala几乎一切都是表达式。组合表达式是包括在花括号里面的任意数量的表达式。
包、方法
几乎所有具名的子程序都被创建成方法
def methodName(arg1:Type1, arg2 Type2,...):returnType = {
//code
result
}
类、对象
Scala是混合对象函数式语言,对象包含数据的val与var(域),通过方法来执行动作。类定义了域和方法。
重载
相同的方法用于处理不同的状态,直观理解是方法名相同,参数列表不同。
class OverLoadingExample{
def f():Int = { 1}
def f(n:Int):Int ={ n + 2}
scala中辅助构造器就是重载构造器。
case 类
case类会自动将所有参数都创建为val。
字符串插值
使用$符号进行插值,转换为字符串形式。
函数作为对象
def show(n:Int):Unit={println("> "+n)}
val v = Vector(1,2,3,4)
v.foreach(show)
show是函数,这里scala自动将其提升为函数对象。
map reduce、推导
map,接受单个参数并产生返回值得函数,并应用于序列的每个元素。
reduce,使用参数来组合序列中每个元素。
这是函数式编程重要标志,它一小步一小步循序渐进地解决问题。
例如
for( n <- v )
对于每次迭代,序列v的下个元素会赋值给n。
特征
特征是小型的逻辑概念,使用trait定义,特征只表示单一的性质,例如定义衣服的时候,可以使用特征颜色,纹理,同样在定义颜料的时候,你还可以使用这两个特征。
使用特征可以将模型划分为若干独立的部分,将问题分解为大量小碎片。
反射、多态
反射是拿起一个对象并将其放在镜子前面,这样它就可以发现自身的奥秘。
多态表示我们在不同的类型上执行相同的操作,例如,移动操作作用于动物就是动物在跑,作用于汽车就是汽车在行驶。
不能一开始假设做正确的设计,需要写一些代码,然后运行,看效果,然后重构。
网友评论