2
我們可以用其他的方式實現一個概念嗎?對象可以用高階函數來實現嗎?
Objects in terms of higher order functions?
Higher order functions in terms of objects?
我們可以用其他的方式實現一個概念嗎?對象可以用高階函數來實現嗎?
Objects in terms of higher order functions?
Higher order functions in terms of objects?
是的。
對象在高階函數?
如果你的語言有記錄,那麼你可以實現對象作爲閉包在一個公共環境中的記錄。實際上,這正是ECMAScript中如何實現對象。 (在ECMAScript中,記錄被混淆的稱爲對象,雖然)。
如果沒有記錄,或者您訂閱OO的面向消息的範例,您可以使用選擇函數來代替,這需要的「message」作爲參數並根據消息返回閉包。這幾乎是所有的object systems in Scheme工作,例如Oleg Kiselyov's Purely-functional Object-Oriented System。
根據對象的高階函數?
其實Scala implements functions using objects。
這正是功能是如何在Scala中實現(與名爲apply
的方法),紅寶石(名爲call
的方法)Python
,(與名爲__call__
法),和Java(作爲一個這樣的實例叫做SAM界面,一個單一抽象方法的界面)。
[在Scala中使用函數編寫類的可能的重複](http://stackoverflow.com/questions/38433112/is-it-possible-to-write-classes-using-functions-in-scala)。 – jwvh