如何在Scala上实施函数式编程
我开始学习函数编程,我真的想学习
Scala,而不是Haskell或Lisp.
但是有些人声称学习Scala作为第一种函数式语言会减慢你对函数式编程的学习,因为Scala允许你对两种方式进行编程,并且当面对一个难题时,人们倾向于编写程序方式. 我的问题是,我怎样才能确保我以纯粹的功能方式编程? (我的意思是,也许我无法区分两种风格,我无意中在程序上编程). 我知道,例如,我应该只使用val而不是vars. 解决方法
其他答案已经提出了一些好处,但是为了尝试快速制定一些指导方针,以下是我的开始:
首先,要完全避免一些事情: >不要使用var关键字. 然后,通常要避免的一些事情: >警惕调用返回类型为Unit的任何内容.返回类型为Unit的函数要么不执行任何操作,要么仅通过副作用执行操作.在某些情况下,你将无法避免这种情况(IO是显而易见的),但你在别处看到它可能是一种杂质的迹象. 一旦你避免了这些事情,你可以做些什么来使你的代码更具功能性? >当您执行直接递归时,寻找机会通过使用更高阶的组合器来概括它. fold可能是你最大的候选者 – 列表上的大多数操作都可以通过合适的折叠来实现. foo match { case Some(x) => Some(x + 2) case None => None } 可以替换为: foo map ( _ + 2 ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |