我在现场观看了一场演讲,该人说他们在工作中在功能上做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"))