ようへいの日々精進XP

よかろうもん

2018 年 02 月 28 日(水)

ジョギング

  • 香椎浜 x 2 周
  • なんだかずーっと背中が辛い

日課

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

明日から

  • 東京出張, 金曜日に戻る予定

今日のるびぃ ~ Ruby技術者認定試験【Gold】模擬問題を解いてみる (5) ~

もう何度か解いているけど, Ruby技術者認定試験【Gold】模擬問題 を 3 ~ 5 問くらいずつ解いていく.

Q17. Proc

以下のコードの実行結果から__(1)__に当てはまるものを選択してください.

# コード
sum = Proc.new{|x, y| x + y}
puts __(1)__


# 実行結果
3

sum.call(1, 2)

  • Proc.new ではブロックで指定した手続きを表すオブジェクト
  • 手続きを呼び出す時は Proc オブジェクトに対して call メソッドを呼ぶ
  • ブロック引数は call メソッドの引数で渡すことができる

以下, 実行結果.

[1] pry(main)> sum = Proc.new{|x, y| x + y}
=> #<Proc:0x000056411fc9e2b0@(pry):1>
[2] pry(main)> puts sum.call(1, 2)
3
=> nil

Q18. StringIO

stringioライブラリの説明として正しいものを選択してください.

1. 文字列をIOオブジェクトのように扱うことができる

Q19. YAML

以下のコードを実行した結果を選択してください.

# コード
require 'yaml'
dir = <<EOY
file1:
  name: file1.txt
  data: text
EOY
p YAML.load(dir)

{"file1"=>{"name"=>"file1.txt", "data"=>"text"}}

  • YAML ライブラリを利用することで, 人間が読めるテキスト形式でオブジェクトを表現することが出来る
  • YAML はあくまで 仕様 であり, それを処理するライブラリの 実装 が必要
  • Ruby 2.0.0 以降はバックエンドライブラリとして psych が利用されている

以下, 実行結果.

[3] pry(main)> require 'yaml'
=> true
[4] pry(main)> dir = <<EOY
[4] pry(main)* file1:
[4] pry(main)*   name: file1.txt
[4] pry(main)*   data: text
[4] pry(main)* EOY
=> "file1:\n  name: file1.txt\n  data: text\n"
[5] pry(main)> p YAML.load(dir)
{"file1"=>{"name"=>"file1.txt", "data"=>"text"}}
=> {"file1"=>{"name"=>"file1.txt", "data"=>"text"}}

ちなみに, psych を利用した実行例.

[1] pry(main)> require 'psych'
=> true
[2] pry(main)> Psych.load("--- foo")
=> "foo"
[3] pry(main)> Psych.dump("foo")
=> "--- foo\n...\n"
[4] pry(main)> { :a => 'b'}.to_yaml
=> "---\n:a: b\n"

Q20. コマンドラインオプション

Ruby で使用可能なオプションではないものを選択してください.

  • -t

Rubyコマンドラインオプションは, 以下のドキュメントを参考に.