scala中用var和val定义变量都是可以的。
用val定义的变量是不可变的,被初始化后值就固定下来,不可以再被修改(这类似于java中的final关键字);用var定义的变量是可变的,可以任意修改。
仍然要注意这里说的不可变是针对变量本身而言,而非变量所指向的实例。比如说如果定义了一个StringBuffer的val变量如val buffer = new StringBuffer(),那么变量buffer再执行诸如buffer.append(“robin”)这样的操作来修改buffer实例也是可行的。但是如果val变量是一个String类型的字符串如val domain = “zhyea.com”,那么就不可以再对变量domain做任何操作了——因为String类型本身也是final型的,不可变。
在scala编程中应尽量优先使用val。这可以提升不变性和函数式风格。
------------------
在这里有一点体会:scala好像是在尽力提高语义的丰富性,争取用更简短的表达式表达更丰富的内容;同时呢它又在尝试减少程序结构(或者说是模式)的复杂性,鼓励使用一种直指目标的编程风格。