Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
このコードを考慮すると:
def x; end puts public_methods.include? :x
それirbをRubyインタープリター(両方ともRuby 1.9.3を使用)で実行すると、次のようになります。
irb
true # from irb false # from ruby
トップレベル メソッドが でパブリックに定義されirbているのはなぜですか? また、それが と異なるのはなぜrubyですか?
ruby
この動作は Ruby 1.9.3p448 で確認できます。
irb の repl では、定義がシングルトンでラップされているためだと思うので、それを模倣するには、スクリプトに次のように記述します。
class << self def x; end end puts public_methods.member? :x # true