ようへいの日々精進XP

よかろうもん

2018 年 04 月 13 日(金)

ジョギング

  • 皇居を走ってきた
  • 今日は信号機に引っかかることが無かったので 42 分くらい (距離にして 9 キロくらい)

日課

  • お休み

仕事

  • お客様先に訪問して打ち合わせ

帰福

  • 空港で西尾さんと会って 30 分くらい話す
  • 日本とシンガポールを行き来していて, フリーランスのエンジニアをやってるらしい, 刺激になった

夕飯

  • 俺たちの「よしもと」は満席
  • 串カツ「もりす」で落ち着く

疲れた

今日のるびぃ ~ Ruby 技術者認定試験 Gold 演習問題を解いていく (23) ~

もう何度か解いているけど, Ruby 技術者認定試験合格教本 の演習問題と模擬試験を数問ずつ解いていく. ポイントは, 問題が何について問われているかがちゃんと理解出来ていること.

Q37. オブジェクト指向

以下のコードを実行するとどうなるか. 全て選べ.

module Mod
  def foo
    puts 'Mod'
    super
  end
end

class Cls1
  def foo
    puts 'Cls1'
  end
end

class Cls2 < Cls1
  prepend Mod
end

Cls2.new.foo
  1. Mod と表示される
  2. Cls1 と表示される

以下, irb による実行例.

...
irb(main):018:0* Cls2.new.foo
Mod
Cls1
=> nil

以下, 解説より抜粋.

  • prepend で mix-in されたメソッドは元から定義されていたメソッドより先に呼び出される
  • prepend で呼び出されたモジュール内で super を呼び出すと, 元から定義されていたメソッド (スーパークラスのメソッド) が呼び出される

Q38. オブジェクト指向

以下のコードを実行するとどうなるか.

module Mod
  def foo
    puts 'Mod'
  end
end

class Cls1
  def foo
    puts 'Cls1'
  end
end

class Cls2 < Cls1
  include Mod
end

Cls2.new.foo
  1. Mod と表示される

以下, irb による実行例.

...
irb(main):017:0* Cls2.new.foo
Mod
=> nil

以下, 解説より抜粋.

  • インクルードしているモジュールのメソッドは, スーパークラスのメソッドよりも優先して実行される

以下, メソッド探索の順番.

irb(main):018:0> Cls2.ancestors
=> [Cls2, Mod, Cls1, Object, Kernel, BasicObject]

Q39. 標準添付ライブラリ

rdoc コメントのマークアップとして適切な記述を全て選ぶ.

  1. *word* で太字
  2. * で番号無しリスト

以下, 他の選択肢について.

  1. _word_等幅フォント...ではなく, イタリック体
  2. +word+ で斜体...ではなく, タイプライタ体

以下, 解説より抜粋.

  • _word_ はイタリック体
  • +word+ はタイプライタ体 (等幅)

一度はガッツリ rdoc について触れてみたい.

フムフム.