ようへいの日々精進XP

よかろうもん

2018 年 07 月 23 日 (月)

ジョギング

日課

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

豚汁

  • お昼に豚汁とうどんを煮込んで食べた
  • 美味しかった

今日のるびぃ ~ Ruby 技術者認定試験合格教本 (Silver/Gold 対応) Ruby 公式資格教科書 模擬試験 (13) 文法 (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)

文法 (8)

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

# コード
tag = ->(t, msg) {
  print "<#{t}>#{msg}</#{t}>"
}
tag.[ x ](:p, 'Hello, World')

# 実行結果
Hello, World

以下, 解答.

  1. call

以下, irb にて確認.

irb(main):001:0> tag = ->(t, msg) { print "<#{t}>#{msg}</#{t}>" }
=> #<Proc:0x005602b73b55c8@(irb):1 (lambda)>
irb(main):002:0> tag.call(:p, 'Hello, World')
<p>Hello, World</p>=> nil

以下, 解説より抜粋.

  • lambda 式は, call で実行する

文法 (9)

Q23. 以下のコードを実行すると何が表示されるか.

begin
  exit
rescue StandardError
  puts 'StandardError'
rescue SystemExit
  puts 'SystemExit'
end
puts 'End'

以下, 解答.

  1. SystemExit End

以下, スクリプトにて確認.

$ cat exit.rb 
begin
  exit
rescue StandardError
  puts 'StandardError'
rescue SystemExit
  puts 'SystemExit'
end
puts 'End'
$ ruby exit.rb
SystemExit
End

以下, 解説より抜粋.

  • 組み込み関数 exit は, 例外 SystemExit を発生させる
  • これを rescue すれば, プログラムの実行は継続し, rescue しなければプログラムは終了する
$ cat exit.rb
begin
  exit
rescue StandardError
  puts 'StandardError'
end
puts 'End'
$ ruby exit.rb
$ 

上記の例では, exitrescue していないのでプログラムは即終了している.

文法 (10)

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:0x005646a821df28@(irb):1>
irb(main):002:0> puts add.call(1, 2)
3
=> nil

以下, 解説より抜粋.

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

フムフム.