-1

我在现场观看了一个演讲,有人说他们在工作中正在使用 Scala 功能,他们使用案例类,将类型转换为另一种类型,无处不在的不变性等等。

这实际上是如何工作的?我很想看到一个带有纯函数方法的简单的 hello world 应用程序。

我也看不出我怎么能完全摆脱它,var因为有时我只是需要它。

4

2 回答 2

5

Coursera上有一个课程就是这样。

于 2012-10-26T19:05:51.497 回答
1

“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"))
于 2012-10-26T19:01:42.363 回答