2

このコードを考慮すると:

def x; end
puts public_methods.include? :x

それirbをRubyインタープリター(両方ともRuby 1.9.3を使用)で実行すると、次のようになります。

true # from irb
false # from ruby

トップレベル メソッドが でパブリックに定義されirbているのはなぜですか? また、それが と異なるのはなぜrubyですか?

irbセッション

4

1 に答える 1

1

この動作は Ruby 1.9.3p448 で確認できます。

irb の repl では、定義がシングルトンでラップされているためだと思うので、それを模倣するには、スクリプトに次のように記述します。

class << self
  def x; end
end

puts public_methods.member? :x    # true
于 2013-07-27T08:50:30.320 に答える