ようへいの日々精進XP

よかろうもん

2018 年 02 月 22 日(木)

ジョギング

  • 積極的に休む

日課

  • (腕立て x 50 + 腹筋 x 30) x 3

奥さん

  • 引き続き, 体調が悪い
  • どうやって励ませばよいかわからなくなる時があるけど, 出来るだけ寄り添ってあげられればと考えている
  • 夜はバタバタしてて, 奥さんが好きな鍋を作ることが出来なかった

Ruby 25 周年

  • Twitter で #ruby25th のツイートを読んでいると, こんなにも Ruby に熱い思いを傾けている人たちがいるんだなと思って感動しているところ
  • とにかく Gold 受かるぞ!

ソフトウェア工学

昨日, TDD 勉強会に参加して, TDD をちゃんと知るためにはソフトウェア工学をちゃんと勉強すべきという結論に至ったので, 勉強方法を模索している.

今日のるびぃ ~ メソッド探索とか (1) ~

すぐに忘れるので.

基本パターン

module Mod1
  def method1
    p 'Mod1#method1'
  end
end

class Cls1
  def method1
    p 'Cls1#method1'
  end
end

class Cls2 < Cls1
  def method1
    p 'Cls2#method1'
  end
end

Cls2.new.method1 
Cls2.ancestors

pry で実行例.

[6] pry(main)> Cls2.new.method1
"Cls2#method1"
=> "Cls2#method1"
[7] pry(main)> Cls2.ancestors
=> [Cls2, Cls1, Object, PP::ObjectMixin, Kernel, BasicObject]

Mod1 を include で Mix-in

module Mod1
  def method1
    p 'Mod1#method1'
  end
end

class Cls1
  def method1
    p 'Cls1#method1'
  end
end

class Cls2 < Cls1
  include Mod1
  def method1
    p 'Cls2#method1'
  end
end

Cls2.new.method1 
Cls2.ancestors

pry で実行例.

[6] pry(main)> Cls2.new.method1 
"Cls2#method1"
=> "Cls2#method1"
[7] pry(main)> Cls2.ancestors
=> [Cls2, Mod1, Cls1, Object, PP::ObjectMixin, Kernel, BasicObject

Mod1 を prepend で Mix-in

module Mod1
  def method1
    p 'Mod1#method1'
  end
end

class Cls1
  def method1
    p 'Cls1#method1'
  end
end

class Cls2 < Cls1
  prepend Mod1
  def method1
    p 'Cls2#method1'
  end
end

Cls2.new.method1 
Cls2.ancestors

pry で実行例.

[7] pry(main)> Cls2.new.method1 
"Mod1#method1"
=> "Mod1#method1"
[8] pry(main)> Cls2.ancestors
=> [Mod1, Cls2, Cls1, Object, PP::ObjectMixin, Kernel, BasicObject]

prepend を呼び出したクラスよりも先にモジュールに対してメソッド探索を行う.

ふむふむ.