我有這方面的工作代碼:類方法,如哈希值
class Server
def handle(&block)
@block = block
end
def do
@block.call
end
end
class Client
def initialize
@server = Server.new
@server.handle { action }
end
def action
puts "some"
end
def call_server
@server.do
end
end
client = Client.new
client.call_server
我的服務器將處理一個以上的動作,所以我想更改代碼這樣的方式:
class Server
def handle(options)
@block = options[:on_filter]
end
def do
@block.call
end
end
class Client
def initialize
@server = Server.new
my_hash = { :on_filter => action }
@server.handle(my_hash)
end
def action
puts "some"
end
def call_server
@server.do
end
end
client = Client.new
client.call_server
這是不正確的代碼,因爲行動()方法調用中創建my_hash,但如果我嘗試修改代碼:
my_hash = { :on_filter => { action } }
我得到錯誤信息。
是否可以使用散列值的方法創建散列?
方法肯定是對象,他們有一個全班他們!實際上,他們中的兩個:Method,UnboundMethod。檢查我的回答 – 2010-04-08 14:10:15
嗯,不知道這個:http://www.mentby.com/david-a-black/are-methods-objects.html但是你說得對,'method'方法也可以是有用的。 – 2010-04-08 15:04:51
他表示他們不是「頭等客體」,無論如何。他可能有一個定義,但我不知道。 帶'object_id'的參數只是顯示方法不是立即數(如符號,true,...)。但是,浮動,字符串,Procs等都不是。 方法可以看作是一個綁定接收方的UnboundMethod。這並不能使他們成爲一個客體。在Ruby中:'42.method(:to_s).is_a?(Object)#=> true' – 2010-04-08 16:35:11