ようへいの日々精進XP

よかろうもん

2018 年 07 月 14 日 (土)

ジョギング

  • ゆるりと香椎浜 x 2 周
  • 右半身と左半身のバランスが悪い感じは引き続き
  • 気温は高いけど, 海風が涼しく感じて走りにくさというのは感じなかった

日課

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

かずきん, うきこ夫妻と暑気払い

  • 暑気払いにしては時期は早いかもしれないが, かずきん, うきこ夫妻と博多で一杯
  • 〆はいつものようにカラオケまでのスペシャルコースで楽しい時間を過ごすことが出来た

今日のるびぃ ~ Ruby 技術者認定試験合格教本 (Silver/Gold 対応) Ruby 公式資格教科書 模擬試験 (4) オブジェクト指向系問題 (3) ~

irb に動作確認環境は以下の通り.

$ ruby --version
ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux]
$ irb --version
irb 0.9.6(09/06/30)

オブジェクト指向 (9)

以下のコードと同じ意味のコードを選ぶ.

def foo
  puts 'Hello'
end

以下, 解答.

class Object
  private
  def foo
    puts 'Hello'
  end
end

以下, irb にて確認.

irb(main):001:0> def foo1
irb(main):002:1>   puts 'Hello'
irb(main):003:1> end
=> :foo1

foo1irb(main):004:0>
irb(main):005:0* foo1
Hello
=> nil
irb(main):006:0> class Object
irb(main):007:1>   private
irb(main):008:1>   def foo2
irb(main):009:2>     puts 'Hello'
irb(main):010:2>   end
irb(main):011:1> end
=> :foo2

foo2irb(main):012:0>
irb(main):013:0* foo2
Hello
=> nil

以下, 解説より抜粋.

  • トップレベルは Object クラスのオブジェクトとなる
  • トップレベルで定義されたメソッドの可視性は private である

ホントに private メソッドであるかを確認.

irb(main):001:0> def foo1; end
=> :foo1
irb(main):002:0> private_methods.grep(/foo/)
=> [:foo1]

ホンマヤ.

オブジェクト指向 (10)

B と出力するコードを選ぶ.

早速だけど, 以下, 解答.

# 解答 1
class Object
  def self.const_missing a
    p "#{a}"
  end
end
B

# 解答 2
class Hoge
  def self.const_missing a
    p "#{a}"
  end
end
B

以下, irb にて確認.

# 解答 1
irb(main):001:0> class Object
irb(main):002:1>   def self.const_missing a
irb(main):003:2>     p "#{a}"
irb(main):004:2>   end
irb(main):005:1> end
=> :const_missing
Birb(main):006:0> B
"B"
=> "B"

# 解答 2
irb(main):007:0> class Hoge
irb(main):008:1>   def self.const_missing a
irb(main):009:2>     p "#{a}"
irb(main):010:2>   end
irb(main):011:1> end
=> :const_missing
Birb(main):012:0> B
"B"
=> "B"

以下, 解説より抜粋.

  • const_missing はクラスに定数が定義されていない場合に呼び出されるメソッド
  • 呼び出している定数 B は, いずれもトップレベル (Object クラス) の定数 B を呼び出している

フムフム.