ジョギング
- 香椎浜 x 2 周
- んー、体中に疲れが溜まっている感じ
日課
- なんか, 体中が張ってるし, キツかったのでお休み
夕飯
- パスタを作る
- トメイトとしらすをいれたりしたら, なかなか美味しい感じに作れた
今日のるびぃ ~ Ruby技術者認定試験【Gold】模擬問題を解いてみる (re: 2) ~
もう何度か解いているけど, 再び, Ruby技術者認定試験【Gold】模擬問題 を 3 ~ 5 問くらいずつ解いていく.
Q4. 文法
以下のコードを実行した結果を選択する.
# コード a, *b = *[1, 2, 3] p a p b
以下のように出力されるはず.
1 [2, 3]
以下, irb での実行結果.
irb(main):001:0> a, *b = *[1, 2, 3] => [1, 2, 3] irb(main):002:0> p a 1 => 1 irb(main):003:0> p b [2, 3] => [2, 3]
以下, 解説より抜粋.
- 配列の頭に
*
を付けると要素を展開することができる - 代入式の左辺の変数の先頭に
*
を指定する (*b
) と複数の要素を配列に集約して受け取ることが出来る
以下のように実行しても, 正答と同じ結果が得られる.
irb(main):004:0> a, *b = [1, 2, 3] => [1, 2, 3] irb(main):005:0> a => 1 irb(main):006:0> b => [2, 3]
Q5. 定数へのアクセス
以下のコードの実行結果から __(1)__ に当てはまるものを選択する.
# コード module M CONST = "HELLO" end puts __(1)__ # 実行結果 HELLO
以下が __(1)__ に該当する.
- ::M::CONST
以下, irb での実行結果.
irb(main):001:0> module M irb(main):002:1> CONST = "HELLO" irb(main):003:1> end => "HELLO" irb(main):004:0> puts ::M::CONST HELLO => nil
- 定数にアクセスする場合
::
という記号を利用する - モジュールによって定数の名前空間が分かれている為,
モジュール::定数
というフォーマットでアクセスする - モジュールやクラスなどの定義の一番外側の領域を
トップレベル
と呼ぶ - トップレベルより定数にアクセスする場合は
::モジュール::定数
というフォーマットでアクセスする
Q6. 例外処理
以下のコードを実行した結果を選択する.
# コード class Error1 < StandardError; end class Error2 < Error1; end begin raise Error2 rescue Error1 => ex puts ex.class end
以下のように出力されるはず.
Error2
以下, irb での実行結果.
irb(main):001:0> class Error1 < StandardError; end => nil irb(main):002:0> class Error2 < Error1; end => nil irb(main):003:0> begin irb(main):004:1* raise Error2 irb(main):005:1> rescue Error1 => ex irb(main):006:1> puts ex.class irb(main):007:1> end Error2 => nil
以下, 解説より抜粋.
- rescue 節で捕捉できる例外は、指定した例外クラス及び, そのサブクラス (設問では Error1 が指定されていて, そのサブクラスである Error2 も該当)
- Erro1 が捕捉する例外として指定されているが,
raise Error2
で Error2 の例外を発生させている為、 Error2 の 例外を捕捉することが出来る
ちなみに, 以下のように Error 1 を raise して, Error1 を rescue しているので, Error1 が出力される.
irb(main):008:0> class Error1 < StandardError; end => nil irb(main):009:0> class Error2 < Error1; end => nil irb(main):010:0> begin irb(main):011:1* raise Error1 irb(main):012:1> rescue Error1 => ex irb(main):013:1> puts ex.class irb(main):014:1> end Error1 => nil
レイガイガイマイチリカイデキテイナイ.....