【发布时间】:2015-01-15 13:52:27
【问题描述】:
谁能解释一下函数式编程方面函数和方法之间的区别。
我通过一个 Scala 的案例研究来问这个问题
我们记下了两件事,即一个函数和一个做同样事情的方法
方法
def add(x:Int, y:Int):Int = x + y
功能
val addFunc:Function1[Int, Int] = (x,y) => x + y
我们可以看到它们都做同样的事情,即添加 2 个整数。但是我们通过函数获得了一些额外的属性。
由于这是一个函数,它将被视为第一类对象,如 Double、Float 等,可以作为值传递给任何其他函数或方法
我们或许可以将此函数存储在数据结构中,例如链表或哈希映射
这是不变性的完美示例,并保留了函数式编程世界的引用透明性,即我可以保证调用此函数 N 次我将始终得到相同的结果,因为这没有任何副作用。
这可以传递给更高阶的函数,例如 map 或 reduce,并且可以做 N 件事
这是一个依赖类型,因为它清楚地指定了它的类型,即 (Int => Int)
与命令式编程语言中的方法相比,任何人都可以详细解释函数可以提供的其他一些好处吗?
【问题讨论】:
标签: scala functional-programming