1
object = Object.new
object.define_singleton_method(:foo) do
  :bar
end
object.foo

失败private method `foo' called for #<Object:0x00000001e89580> (NoMethodError)。Ruby 2.0.0 的行为并非如此。这是 2.1.0 中的错误还是有意更改?

4

2 回答 2

1

这是一个已知问题。该错误在#9005#9141报告。

于 2013-12-19T13:11:02.243 回答
1

由于define_singleton_method(和其他define_method方法)现在返回方法名称的符号,您可以通过public在任何对define_method.

public define_method(:foo) { :bar }

于 2014-01-02T18:16:42.683 回答