2016/7/27の日記
Rubyのメソッドに関する雑多なメモ
<< # 右ビットシフト `*2` と同じ意味 >> # 左ビットシフト `/2` と同じ意味 | # 論理和演算子. 0011|0101 => 0111 8.to_s(2) #=> "1000" : 2進数表現の文字列を取得 "0x4d2".hex #=> 1234 : 16進数を10進数に変換. 0xはなくてもあっても良い.
super
Rubyのsuperはオーバーライドしているメソッドを呼び出す.
注意点として、引数を省略してsuper
とコールすると、全ての引数を受け渡してコールしてしまう.
super()
と明示的に()をつけてコールすると、引数を渡さない.
このことは Effective Ruby でも書かれていた.
- 作者: Peter J.Jones
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/19
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
クラスマクロを自分で定義してみる.
クラスマクロを使うことで、 attr_accessor
みたいなメソッドを定義できる.
完全にクラスメソッドだけど、こういう attr_accessor
っぽい宣言的な構文で記述が出来る奴をクラスマクロと言うらしい.
Railsの has_many
, belongs_to
もクラスマクロだ.
class User attr_accessor :name def self.attr_special_accessor( *key ) p key end def self.before_hoge_hoge(key) p key end def self.after_hoge_hoge(k) p k end end class Boy < User attr_special_accessor :name, :age before_hoge_hoge :foo after_hoge_hoge :bar end
このQiitaの記事がとても参考になった.