2009-05-27 62 views
19

我正在閱讀一篇討論具有接收器的方法的文檔。什麼是接收器?在Ruby中,「接收器」是指什麼?

+1

我曾經懷疑這是否是一個受美式橄欖球啓發的術語。 – 2010-03-31 06:57:39

+0

我從ruby得到的新想法是OO編程就像是一種消息傳遞。 – Alex 2012-06-15 08:13:49

回答

18

在Ruby(和其它語言的是採取從Smalltalk的靈感)對象被認爲是發送和接收的郵件'。

在Ruby,對象,基類一切的,具有發送方法:Object.send例如:

class Klass 
    def hello 
    "Hello!" 
    end 
end 
k = Klass.new 
k.send :hello #=> "Hello" 
k.hello   #=> "Hello" 

在這兩種情況下,k是「你好」消息的接收器

6

之前的對象。

想到調用方法x.y作爲「向對象x發送指令y」。

它的思維方式Smalltalk的,因爲你得到的一些Ruby的更先進的功能,將滿足你的需要。

6

在原來的Smalltalk術語,關於「對象」方法被代替refered爲消息對象(即你沒有呼籲對象foo的方法,你發送對象foo的消息)。所以foo.blah發送了「foo」對象正在接收的「blah」消息; 「foo」是「blah」的接收者。