2
我想在Ruby中使用return_empty_set
類方法,類似於attr_reader
方法。我提出的實現是在Ruby元編程中避免class_eval
class Class
def return_empty_set *list
list.each do |x|
class_eval "def #{x}; Set.new; end"
end
end
end
和用法示例:
class Foo
return_empty_set :one
end
Foo.new.one # returns #<Set: {}>
而是訴諸串看起來相當黑客。有沒有更清潔或更好的方式來寫這個,或許可以避免class_eval
?或者這是最好的方式?
優秀的,謝謝。你是對的,它應該在'Module'下,因爲我可以'包含'這個功能。 – Peter 2010-05-22 18:55:22
不知道這是否意味着什麼,但將它放在'Module'下的原因是,您可以在「模塊」定義(稍後包含)以及「類」中使用它。 – 2010-05-22 19:02:22
是的,這就是我的意思。 – Peter 2010-05-23 04:10:29