ようへいの日々精進XP

よかろうもん

2018 年 04 月 03 日(火)

ジョギング

  • 香椎浜 x 2 周
  • 軽装で走っても汗がいい感じで流れる季節になってきた
  • 足の痛みはじょじょに良くなってきている感

日課

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

イライラ

  • ちょっとした問題が解決出来ないイライラで奥さんに八つ当たりしてしまった
  • ごめんなさい

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

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

Q10. 文法

4 行目で raise される例外オブジェクトのクラスは何か.

begin
  "cat".narrow
rescue NameError
  raise
end
  1. NoMethodError

以下, irb での実行例.

irb(main):001:0> begin
irb(main):002:1*   "cat".narrow
irb(main):003:1> rescue NameError
irb(main):004:1>   raise
irb(main):005:1> end
NoMethodError: undefined method `narrow' for "cat":String
        from (irb):2
        from /home/kappa/.rbenv/versions/2.1.10/bin/irb:11:in `<main>'

以下, 解説より抜粋.

  • オブジェクトに存在しないメソッドを実行した場合, NoMethodError オブジェクトが発生する
  • 出題コードでは, NoMethodError が発生するので, 3 行目以降の rescue でそのまま raise される

Q11. 文法

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

while [ x ].gets
  puts $_ if $_ =~ /Ruby/
end
[ y ]
java programming
Ruby programming
C programming

以下, 実行結果.

Ruby programming
  1. [ x ] = DATA / [ y ] = __END__

以下, スクリプトでの実行例.

$ cat sample.rb
while DATA.gets
  puts $_ if $_ =~ /Ruby/
end
__END__
java programming
Ruby programming
C programming

$ ruby sample.rb
Ruby programming

以下, 解説より抜粋.

  • __END__ 以降に記述した内容は, File オブジェクト DATA から読み出すことが出来る
  • ソースファイルの __END__ 以降は解析, 実行の対象にならないので, その部分にプログラムが利用するためのデータを書き込んでおくことができる
  • __END__ を含まないプログラムにおいては DATA は定義されない

Q12. 文法

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

def method
  puts "Hello, World"
end

[ x ]

def method
  old_method
  puts "Hello, Ruby World"
end

method

以下, 実行結果.

Hello, World
Hello, Ruby World
  1. alias old_method method

以下, irb での実行例.

...
irb(main):009:0> method
Hello, World
Hello, Ruby World
=> nil

以下, 解説より抜粋.

  • alias は, 第一引数に新メソッド名, 第二引数に旧メソッド名を指定する
  • メソッド名は, 識別子かシンボルで記述する

フムフム