ジョギング
- 香椎浜 x 2 周
- 左側の足が踵から太ももにかけて痛い
- デポに取り寄せしてもらっていた靴が届いたらしい
日課
- (腕立て x 50 + 腹筋 x 30) x 3
夕飯
- 鍋
- ウィークデーはほぼ鍋なので, 新たな鍋を模索したい
今日のるびぃ ~ private メソッドを含む module を mix-in した場合... ~
昨日の続き. private メソッドを含むクラスを継承して private なメソッドを継承先で呼んだ場合, レシーバー付きでも呼ぶことが出来た.
[1] pry(main)> class C [1] pry(main)* private [1] pry(main)* def my_private_method [1] pry(main)* 'my_private_method' [1] pry(main)* end [1] pry(main)* end => :my_private_method [2] pry(main)> class C2 < C [2] pry(main)* def my_private_method [2] pry(main)* super [2] pry(main)* end [2] pry(main)* end => :my_private_method [3] pry(main)> c = C.new => #<C:0x00562c946b2ee0> [4] pry(main)> c.my_private_method # レシーバー付きでは呼べない NoMethodError: private method `my_private_method' called for #<C:0x00562c946b2ee0> from (pry):13:in `__pry__' [5] pry(main)> c2 = C2.new => #<C2:0x00562c9471dd58> [6] pry(main)> c2.my_private_method # 継承したクラスであれば, レシーバ付きでも呼べる => "my_private_method"
では, 同様に private メソッドを含む module を mix-in した場合...
[1] pry(main)> module M [1] pry(main)* private [1] pry(main)* def my_private_method [1] pry(main)* 'my_private_method' [1] pry(main)* end [1] pry(main)* end => :my_private_method [2] pry(main)> class C [2] pry(main)* include M [2] pry(main)* end => C [3] pry(main)> c = C.new => #<C:0x0056065770c638> [4] pry(main)> c.my_private_method # mix-in した場合には private なメソッドは呼べない NoMethodError: private method `my_private_method' called for #<C:0x0056065770c638> from (pry):11:in `__pry__' [5] pry(main)> class C2 [5] pry(main)* include M [5] pry(main)* public :my_private_method # どうしても呼びたければ, public メソッドで再定義する [5] pry(main)* end => C2 [6] pry(main)> c = C2.new => #<C2:0x00560657794d08> [7] pry(main)> c.my_private_method => "my_private_method"
ふむふむ.