在Ruby中,我們可以很容易地引用的方法,並在回調樣的方式通過在相同的範圍內是這樣的:Ruby類方法參考
my_method = method(:method_name)
你將如何引用另一個定義一個類的方法類?
所以,如果我有:
class MyClass
class << self
def my_method
// ... do stuff
end
end
end
我將如何引用在不同的類,方法的調用使用?
在Ruby中,我們可以很容易地引用的方法,並在回調樣的方式通過在相同的範圍內是這樣的:Ruby類方法參考
my_method = method(:method_name)
你將如何引用另一個定義一個類的方法類?
所以,如果我有:
class MyClass
class << self
def my_method
// ... do stuff
end
end
end
我將如何引用在不同的類,方法的調用使用?
回答了我自己的一些思考問題:
你不需要在所有在這種情況下。
相反,你可以只使用:
MyClass.public_method(:my_method)
'MyClass.method(:my_method)'也應該工作 –
_「只需使用'public_method'而不是'method'」_忽略了這一點。相關的部分是你必須提供一個明確的接收器來搜索另一個對象中的方法。 – Stefan
有沒有這樣的事情在Ruby中一個類的方法。只有實例方法。我們稱之爲「類方法」,實際上只是碰巧是一個類的對象的單例方法。
等等,我只是說「單身法」嗎?其實,我撒謊了。也沒有單獨的方法。我們稱之爲「單例方法」實際上只是一個單例類的實例方法。
因此,考慮到無論如何只有實例方法,並且您已經知道如何引用實例方法,您已經知道您的問題的答案。你剛剛被教導得很糟糕,因爲有人告訴你,有一種「階級方法」,事實上並非如此。
所以,你實際上在你的問題中回答了你自己的問題:你正在尋找的方法是Object#method
。
「my_method」首先是變量,然後是方法名,這有點令人困惑。 – Stefan