Rubyでの特異メソッド定義方法まとめ

Rubyで特異メソッド(静的メソッド)を定義する方法を網羅してみた。

他の言語だと、全てstaticキーワードを付けるだけというものが多いのに対して、Rubyはたくさんの記述方法が存在する。

 

特異メソッドを定義する時には、どの書き方で定義すればいいのか、ちゃんと考えるようにしよう。

 

一般的によく見る特異メソッドの定義

 

実行結果

method1
method2
method3
method4
method5

 
method2について何故そうなるのかという部分については、class Moduleincluded(class_or_module) -> ()が参考になると思う。

 

インスタンスメソッドが不要な場合限定の書き方

あと、特異メソッドしか定義せず、インスタンスメソッドは定義しない場合は次の記述も使える。

でも、インスタンスメソッドも使いたいことが大半なので、滅多に使わない?

 

ActiveSupportの拡張

 

実行結果

method7

 
ActiveSupport::Concernを拡張したモジュールでは、includedメソッドにブロックを指定することができるようになる。
includedメソッドのブロック内では、selfの値が、モジュールをincludeしているクラスを指すようになる。

 

 

実行結果

C

 

公式ドキュメントはこちら

ActiveSupport::Concern

さいごに

自分なりに知っている、特異メソッドの書き方を網羅してみたつもり。

大きな漏れは無いと思うけど・・

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=1750