🖥
Rubyのクラスメソッドはシングルトンメソッド=特異メソッドである (メタプログラミングRuby)
Rubyではクラス自体にメソッドを定義できる。
例
定義したクラスに
class A
end
メソッドを生やすと
def A.some_method
end
クラスがメソッドを実行できるようになる
A.some_method # nil
とてもシンプルな話だ。
これがクラスメソッドと呼ばれる。
一般的なクラスメソッドの定義
クラス定義の中では、 self
はクラス自身を示す。
つまり次の書き方は、最初の例と同義だ。
class A
def self.some_method # あとで def A.some_method と書くのと同じ
end
end
余談
日本語ではシングルトンメソッドが「特異メソッド」と呼ばれているが、、なんだか混乱するような気もする。あまり特異な感じがしない。
元の英語では Singleton Method
。
こちらの呼び方の方がスッキリした理解ができそうだ。
参考
- 【Ruby】特異メソッドについて - Qiita
- メタプログラミングRuby
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2018-06-02
Discussion