如何以功能方式编写Scala - 案例类和不变性以及所有这些?

时间:2012-10-26 18:56:05

标签: scala functional-programming

我在现场观看了一个人,他们说他们在工作时正在使用Scala功能,他们使用案例类,将类型转换为另一种类型,到处都是不变性等等。

这实际上如何运作?我希望通过纯粹的功能方法看到一个简单的hello world应用程序。

此外,我无法看到如何完全摆脱var,因为有时我只是需要它。

2 个答案:

答案 0 :(得分:5)

在Coursera上有一个course

答案 1 :(得分: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"))