我想在Ruby中使用return_empty_set
类方法,类似于attr_reader
方法。我建议的实施是
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
?或者这是最好的方式吗?
答案 0 :(得分:6)
使用define_method
:
class Module
def return_empty_set *names
names.each do |name|
define_method(name){Set.new}
end
end
end