我在现场观看了一个演讲,有人说他们在工作中正在使用 Scala 功能,他们使用案例类,将类型转换为另一种类型,无处不在的不变性等等。
这实际上是如何工作的?我很想看到一个带有纯函数方法的简单的 hello world 应用程序。
我也看不出我怎么能完全摆脱它,var
因为有时我只是需要它。
我在现场观看了一个演讲,有人说他们在工作中正在使用 Scala 功能,他们使用案例类,将类型转换为另一种类型,无处不在的不变性等等。
这实际上是如何工作的?我很想看到一个带有纯函数方法的简单的 hello world 应用程序。
我也看不出我怎么能完全摆脱它,var
因为有时我只是需要它。
Coursera上有一个课程就是这样。
“Hello world”并不是很好地展示函数式方法,因为它没有任何函数式。(事实上,正如@delnan 所指出的,写入标准输出被认为是一种副作用,所以这个程序永远不能成为纯粹的函数式。)
您需要的最可能原因var
是使用命令式循环,这确实不是函数式方法。等效的功能是在集合上使用一些可用的过滤器/转换函数,或者使用递归。
简单示例:查找列表中以“F”开头的所有字符串。命令式风格(Java):
List<String> result = new ArrayList<String>();
for (String s : strings) {
if (s.startsWith("F")
result.add(s);
}
使用旧式迭代器循环时,命令性会更加明显。
相比之下,功能风格可能是这样的:
val result = strings.filter(_.startsWith("F"))