ホーム

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と出力されてるのですね。

Pocket
LinkedIn にシェア

  • この記事を書いた人

藤沢瞭介(Ryosuke Hujisawa)

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

1
2
no image 3
4
5
6
7
8
9
10
no image 11
12
13
14
15
16
17
18
19
20
21
22
23

-ホーム