Scala 的 if 和 Java 中的用法差不多,但它在 Scala 是个表达式而不仅是条语句,它是有返回值,这让我们用起来很方便。在 Java 中我们一般先声明一个变量,在 if 语句中不同条件下赋不同的值。Scala 中就一条赋值表达式
val a = if (x == 5) 100 else if(x == 10) 200 else 300
val
关键字是用来定义值的,value
的缩写,就是 Java 中的常量 public static final
这里也同样涉及到了 call-by-name, call-by-value,到 Scala 控制台下试下
scala> val a = (1 to 1000000000).foldLeft(0){(a,b)=>a+b} //定义时就要算出 foldLeft 的值,所以需要耗费些时间
a: Int = -243309312scala> def b = (1 to 1000000000).foldLeft(0){(a,b)=>a+b} //定义时很快,每次使用 b 时计算,其实就是定义一个方法,应该好理解
b: Int
scala> b
res15: Int = -243309312scala> b
res15: Int = -243309312 //两次使用 b 时都要重新计算scala> lazy val c = (1 to 1000000000).foldLeft(0){(a,b)=>a+b} //懒加载
c: Int =scala> c
res17: Int = -243309312 //第一次使用时计算
上面再涉及一个 lazy
的概念
本视频讲义:week1-4.pdf
http://v.youku.com/v_show/id_XNzg3MDcyNjU2.html