首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >功能程序设计原则

功能程序设计原则
EN

Stack Overflow用户
提问于 2016-11-21 14:31:37
回答 2查看 132关注 0票数 2

因此,我对函数式编程还是新手,我仍在努力消化这些基本原则。到目前为止,我可以理解,理想情况下,没有可变变量赋值循环和其他命令式控制结构的代码。所以我有个问题。在以下两个代码段之间:

代码语言:javascript
复制
def enrich(xRDD: RDD[xObject], yRDD: RDD[yObject], zRDD: RDD[zObject]): RDD[Result] = {

     val temp = functionA(xRDD, yRDD)
     functionB(temp, zRDD)
}

代码语言:javascript
复制
def enrich(xRDD: RDD[xObject], yRDD: RDD[yObject], zRDD: RDD[zObject]): RDD[Result] = {
     functionB(functionA(xRDD, yRDD), zRDD)
}

我应该选哪一个?为什么?我的猜测是第二个,因为它避免了将数据本地分配给临时val。就这些吗?我做得对吗?我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-21 14:36:43

这两种方式都是好的,但取决于选择哪一种。

这两种方式都没有错。您可以使用上述任何一种方法。但是,由于您没有使用functionA返回的值,所以除了在functionB中,其他任何地方都不使用。第二种方式看起来不错(没有额外的变量)。额外的变量不那么重要(引用所消耗的内存对于实际目的来说是微不足道的)。

误解

在函数式编程中,作业是可以的。重新分配是不可以的。在函数式编程中,使用变量捕获结果是可以的。但是使用var和重新分配var并不是函数编程。

票数 4
EN

Stack Overflow用户

发布于 2016-11-21 14:40:21

如果你能读一点书的话。https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-20.html,您需要深入了解编译器理论,以了解导致变量的优缺点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40722589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档