在下面的代码中,类
Lion
中没有定义方法roar
,但仍然可以使用method_missing
调用。class Lion
def method_missing(name, *args)
puts "Lion will #{name}: #{args[0]}"
end
end
lion = Lion.new
lion.roar("ROAR!!!") # => Lion will roar: ROAR!!!
在什么情况下以及如何使用method_missing
?使用它是否安全?
class Lion
而不是Class Lion
。 - Eric Walkerclass
是必要的。在 Ruby 中,class
就像if
或def
一样是一个关键字,而Class
则是一个类的名称。Class Lion
会导致NameError: uninitialized constant Lion
的错误。 - Nnnes