我可以創建一個「函數」的S4超類並從函數調用訪問該對象的插槽嗎?目前,我有:訪問S4函數超類的插槽
> setClass("pow",representation=representation(pow="numeric"),contains="function")
[1] "pow"
> z=new("pow",function(x){x^2},pow=3)
> z(2)
[1] 4
現在我真正想要的是功能爲x自身所具有的@pow插槽的力量,所以,如果我再做:
> [email protected]=3
我得到立方體,如果我這樣做:
> [email protected]=2
我得到正方形。
但我不明白如何獲得對「自我」的引用,就像我在Python中所做的那樣。我猜它在某處某處環境...
下面是它如何工作的蟒蛇:
class Pow:
def __init__(self,power):
self.power=power
self.__call__ = lambda x: pow(x,self.power)
p = Pow(2) # p is now a 'squarer'
print p(2) # prints 4
p.power=3 # p is now a 'cuber'
print p(2) # prints 8
不能真正容易的,我甚至沒有做「進口反引力「....
我想你可能想使用參考類 – hadley
是啊?這次S語言終於得到了面向對象的編程嗎? – Spacedman
如果按照正確的方式,你的意思是以一種你熟悉java這樣的語言的方式實現,那麼是的。 – hadley