djo*_*dal 2 scala immutability
在 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()
}
Run Code Online (Sandbox Code Playgroud)
您使用什么构造或模式将命令式风格的代码转换为函数式风格?您是否使用 Option 类或其他一些结构?
不确定您是否提供了足够的上下文,但是关于:
val foo = getRequest()
val count = if (foo.isJsonObject) doSomething(foo) else 0
if (count > 0) {
specialCall()
} else {
defaultCall()
}
Run Code Online (Sandbox Code Playgroud)
通常情况下,一般的Scala API(集合,Option,Try,Future,等)和它们的操作(map,flatMap,filter,fold,等),让您表达最命令式结构相当简洁。