scala中的var 与 val
来源:互联网 发布:国密sm4算法 编辑:程序博客网 时间:2024/06/06 02:10
val 与 var
设置val后,就无法对 val 进行更改,这与 Java 语言中 final 变量的操作方式是相同的。不可变本地变量最显著的副作用是很容易实现并发性。
在 val 与 var 之间的不同,实际上,它们的不同之处在于 —— 一个是只读的值,另一个是可变的变量。通常,函数语言,特别是被认为是 “纯” 函数语言(不允许带有副作用,比如可变状态)的那些函数语言,只支持 val 概念;但是,因为 Scala 要同时吸引函数编程人员和命令/对象编程人员,所以这二种结构它都提供。也就是说,Scala 编程人员通常应该首选 val 结构,并在明确需要可变性的时候选择 var。原因很简单:除了使编程更容易之外,val 还能确保程序的线程安全性,Scala 中的一个内在主题是:几每次认为需要可变状态时,其实都不需要可变状态。 让我们从不可变字段和本地变量(val)开始,这是展示上述情况的一种方法,甚至对最坚定的 Java 怀疑论者也是如此。从 Java 中的 final开始介绍可能不是很合理,或许是因为 Java 的非函数特性,尽管此原因不可取。一些好奇的 Java开发人员可能想尝试一下。
// In JavaString filename = "default.properties"; if (options.contains("configFile")) filename = (String)options.get("configFile");//In Java anotherfinal String filename = options.contains("configFile") ? options.get("configFile") : "default.properties";//In Scalaval filename = if (options.contains("configFile")) options.get("configFile") else "default.properties"
使用val是函数式的风格,并能以差不多与Java的final变量同样的方式帮到你。它让代码的读者确信这个变量将永不改变,节省了他们扫描变量字段的所有代码以检查它是否改变的工作。 使用val而不是var的第二点好处是他能更好地支持等效推论:equational reasoning。在表达式没有副作用的前提下,引入的变量等效于计算它的表达式。因此,无论何时都可以用表达式替代变量名。
选择权在你。怎么写都行。使用val可以帮你安全地执行这类重构以不断革新你的代码。
参考文献
http://www.ibm.com/developerworks/cn/java/j-scala/ 系列文章
programming in scala
- scala中的var 与 val
- 简谈scala 中的val 与 var
- Scala中的var val/def
- Scala中的var val/def
- scala中的val 和 var
- scala 中的val 、 var 、def
- scala val 与var 区别
- Scala 的 val与var
- Scala var && val
- Scala的var,val
- Scala 中的val 与 var 的区别 immutable 与 mutable 的 区别
- scala中的var,val,immutable,mutable理解小结
- scala中的var,val,immutable,mutable理解小结
- Scala变量定义val与var的区别
- Scala var val mutable immutable
- scala val和var变量
- val与var
- Scala中val和var的区别
- svn 错误解决
- Android下Sqlite数据库ORM框架之GreenDao详解
- TCP 的那些事儿(上)
- 输出字符串数组
- FTP下载文件,每五分钟查询一次,直到下载完毕
- scala中的var 与 val
- 1077. Kuchiguse (20)
- 自绘窗口要处理的几个关键消息
- 当年年纪青葱,时间匆匆
- 移动文件
- iOS中http请求使用cookie
- HBase 协处理器统计行数
- 新手从域名,服务器,建站.备案-〉个人网站
- C语言中const的用法