創建一個不受約束的方法對新我有這樣的代碼:如何在Ruby中
class Note < Struct.new :value
def to_s
value.to_s
end
def self.use_new(arg)
Note.new arg
end
end
class Chord
def initialize(arr)
@arr = arr
end
def play
@arr.join('-')
end
end
new_method = Note.singleton_method(:use_new)
chords = %w{ G Bb Dd E }
c = Chord.new(chords.map(:new_method))
puts c.play
現在我知道我沒有地圖要做到這一點,我可以簡單地使用map {|n| Note.new n}
但我想知道如何做到這一點。下面說的Note沒有一個叫做singleton_method的方法。當我嘗試使用實例方法(在定義中沒有自己)時,它說該方法不存在。請指教。
我真的不明白如何做到這一點。我試圖抓住新的,但認爲它是「無法忍受的」,所以我定義了一種方法來抓住它。我不知道我們可以在課堂上使用#方法。我認爲它總是必須是instance_method或singleton_method。當我第一次嘗試使用singleton_method時,它說這個函數對於Note類是未定義的。我一直試圖瞭解很長一段時間這種事情。爲什麼我必須在地圖中使用&?我認爲是調用method.to_proc的等式,我不能通過該方法嗎?我怎麼知道.to_proc產量? – Senjai
我不認爲你會有時間來確認這一點嗎? http://stackoverflow.com/questions/16824244/understanding-ruby-metaprogramming-using-method-added-to-overwrite-instance-meth 感謝您的幫助Jorg。 – Senjai