我们可以用其他方式实现一个概念吗?
Objects in terms of higher order functions?
Higher order functions in terms of objects?
Run Code Online (Sandbox Code Playgroud)
是.
高阶函数的对象?
如果您的语言有记录,那么您可以将对象实现为关闭公共环境的闭包记录.实际上,这正是ECMAScript中实现对象的方式.(在ECMAScript中,记录被混淆地称为对象.)
如果您没有记录,或者您订阅面向消息的OO范例,则可以使用选择器函数,它将"message"作为参数并根据消息返回闭包.这就是Scheme中所有对象系统的工作原理,例如Oleg Kiselyov的纯功能面向对象系统.
对象方面的高阶函数?
实际上,Scala使用对象实现函数.
这正是函数在Scala(使用名为方法apply),Ruby(使用名为的方法call)Python(使用名为的方法__call__)和Java(作为所谓的SAM接口的实例,具有单一抽象方法的接口)中实现的方式).
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |