ようへいの日々精進XP

よかろうもん

2018 年 04 月 09 日(月)

ジョギング

  • 昨日, 柱の角にぶつけた右足薬指が腫れていたので大事を取って休んだ
  • 早く治さねば...

日課

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

頭痛

  • 右肩の強い張りと頭痛
  • ストレッチー、ストレッチー

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

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

Q25. オブジェクト指向

以下のコードと同じ意味 (同じ結果となる) のコードを選ぶ.

def foo
  puts 'Hello'
end

以下と同じ意味となる.

class Object
  private
  def foo
    puts 'Hello'
  end
end

以下, irb による動作確認.

irb(main):001:0> def foo
irb(main):002:1>   puts 'Hello'
irb(main):003:1> end
=> :foo
irb(main):004:0> foo
Hello
=> nil
# 一旦, irb を抜けてからの...
irb(main):001:0> class Object
irb(main):002:1>   private
irb(main):003:1>   def foo
irb(main):004:2>     puts 'Hello'
irb(main):005:2>   end
irb(main):006:1> end
=> :foo
irb(main):007:0> foo
Hello
=> nil

以下, 解説より抜粋.

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

Q26. 文法

以下の実行結果になるように, [ x ] に記述する適切なコードを選ぶ.

add = Proc.new{|x, y| x + y}
puts [ x ]

実行結果.

3
  1. add.call(1, 2)

以下, irb による動作確認.

irb(main):001:0> add = Proc.new{|x, y| x + y}
=> #<Proc:0x005559452d4ad0@(irb):1>
irb(main):002:0> puts add.call(1, 2)
3
=> nil

以下, 解説より抜粋.

  • Proc オブジェクトのコードブロックは call で実行する
  • call の引数は, | | で囲まれた変数に渡される

Q27. 組み込みライブラリ

以下の実行結果になるように, [ x ] に記述する適切なコードを選ぶ.

/(\d+)/ =~ "abcd12efgh"
puts [ x ]

実行結果.

12
  1. $1

以下, irb による動作確認.

irb(main):003:0> /(\d+)/ =~ "abcd12efgh"
=> 4
irb(main):004:0> puts $1
12
=> nil

以下, 解説より抜粋.

フムフム