我正在学习Scala上的Functional Programming Principles in Scala | Coursera课程。我不能理解immutability,so many functions和so much dependencies on recursion,Scala是如何真正适用于现实世界的应用程序的。
我的意思是,来自imperative languages的我看到了StackOverflow或Garbage Collection的风险,而且我运行Out Of Memory的所有东西都有多个副本
我在这里漏掉了什么?
发布于 2014-01-04 13:03:02
scala.annotation.tailrec添加@tailrec以确保您的函数是100%尾递归的。这基本上是一个循环。elem :: list,那么所有的数据都会在两个列表之间共享--太棒了!只创建head并指向列表。想象一下,每当客户端请求时,你都必须创建一个列表的新的深层克隆,for.var,只要其他代码不会以任何方式受到影响,即结果总是相同的。Option[T]并与null进行比较。在for理解中使用它们。异常变得非常异常,Option, Try, Box, Either以一种非常好的方式通信失败。与Java语言相比,发布于 2014-01-04 13:32:40
现实世界中的应用程序越来越多地由事件驱动,这涉及到在需要不可变数据结构的不同进程或系统之间传递数据
在大多数情况下,我们要么是在操作数据,要么是在等待资源。在这种情况下,很容易将回调与Actor挂钩
看看http://pavelfatin.com/scala-for-project-euler/,它给出了一些使用map fllter等函数的示例。
不变性和递归的结合避免了许多堆栈溢出问题。这在处理事件驱动的应用程序时很有用
akka.io是一个经典的例子,它可以非常简洁地构建在scala中。
https://stackoverflow.com/questions/20916161
复制相似问题