面向对象的编程和函数式编程如何一起使用?

时间:2014-01-30 16:25:38

标签: functional-programming

Scala声称可以合并OO和FP。 我想知道如何在实践中实现这一目标。我的意思是对象可以改变,所以使它们成为不可变的意味着我必须在每次发生变化时创建一个新对象?这对我来说似乎不太有效。

顺便说一句,如果我从函数中对对象属性进行外部引用,是否会损害参照透明度?

1 个答案:

答案 0 :(得分:1)

不要将此视为一种对另一种范围施加限制的范式,而是如何才能充分利用这两种范式。

举个简单的例子:

对象具有可以在对象内部的功能。现在,内部函数可以在对象中不可变,并且函数的结果可以用于更改对象的状态。

在不同的层面思考,可以使用函数来创建可供对象使用的库。

我喜欢如何充分利用两者是因为我倾向于使用函数式语言为更抽象的处理创建库(模块),然后将OO语言用于更接近人类和外部处理的层。这不是一个严格的规则,而是我从哪里开始的准则。