Scala鼓励使用函数式编程。 对于来自Java或C#命令式世界的程序员来说,这是主要的挑战。 第一步是要认识到函数式和命令式编程之间的区别。 Scala有两个用于变量声明的关键字:
-
var
–可变变量 -
val
–不可变的变量
命令性符号之一是代码中var
的出现。 Scala鼓励倾向于val
,但是请使用适合给定情况的任何东西。
命令式示例:
def printArgs(args: Array[String]): Unit = {
var i = 0
while (i < args.length) {
println(args(i))
i += 1
}
}
更多功能风格:
def printArgs(args: Array[String]): Unit = {
args.foreach(println)
}
在这里,您可以看到Scala鼓励使用功能样式的原因。 它可以帮助您编写更清晰,更易理解且不易出错的代码。 但是您可以做得更好。 重构的方法不是纯粹的功能。 它具有副作用-打印到标准输出流。 具有副作用的函数的一个标志是其结果类型为Unit
。 如果一个函数不返回任何值,则说明它具有副作用或无用。
最实用的解决方案:
def formatArgs(args: Array[String]) = args.mkString("\n")
println(formatArgs(args))
最好是val
,不可变的对象和方法,并且没有副作用。
翻译自: https://www.javacodegeeks.com/2013/09/scala-wonderland-the-functional-style.html