rubyのModule体験04 – 同名のメソッドとクラスメソッドが定義された時

module内に、同名のクラスメソッドと、メソッドが定義されたとき、最終的には、最後に評価された式が優先されます。例えば

irb(main):108:0> module Mod
irb(main):109:1>  def hello
irb(main):110:2>   puts "hello"
irb(main):111:2>  end
irb(main):112:1>  
irb(main):113:1>  def self.hello
irb(main):114:2>   puts "world"
irb(main):115:2>  end
irb(main):116:1> 
irb(main):117:1>  module_function :hello
irb(main):118:1> 
irb(main):119:1> end
=> Mod
irb(main):120:0> 
irb(main):121:0> 
irb(main):122:0> 
irb(main):123:0> 
irb(main):124:0> Mod::hello
hello
=> nil

だったら、 ` module_function :hello` が最後に評価された式ですね。だからhelloと出力されてるのですね。

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事