【发布时间】:2016-10-18 21:00:01
【问题描述】:
在 Scala 中避免使用可变变量被认为是一种好习惯。
来自“Scala 编程,第 2 版”,第 52 页:“Scala 允许您以命令式风格进行编程,但鼓励您采用更具功能性的风格”和后来的“Scala 鼓励您倾向于 vals,但最终考虑到手头的工作,争取最好的工具。”
如何在 Scala 中使这个命令式构造变得优雅(关注变量 count):
var count = 0
val foo = getRequest()
if(foo.isJsonObject){
count = doSomething(foo)
}
if(count>0){
specialCall()
} else{
defaultCall()
}
您使用什么构造或模式将命令式代码转换为函数式代码? 您是否使用 Option 类或其他一些构造?
【问题讨论】:
-
这里使用的模式是表达式方向。所以通常我们不会将控制流操作(
if、try、match)视为计算结果值的表达式,但在 Scala 和其他类似语言中它们是。
标签: scala immutability