ようへいの日々精進XP

よかろうもん

2018 年 04 月 07 日(土)

ジョギング

  • お休み
  • 久しぶりに奥さんを連れ立って家を出たものの風雨と寒さで断念した

日課

  • これまたお休み

ランチ

retty.me

で, 担々麺.

主人が一人で切り盛りしているので, 注文して出てくるまで少し時間が掛かるけど, 待つだけの価値はあると思う.

香椎呑み会

森田さん、毛利さんと三人で.

retty.me

〆に串かつ「もりす」で串かつを.

少し遅い時間から呑み始めたけど, 終電を気にしなくて良いのでワイワイ盛り上がって楽しかった.

ソフトウェア工学

第 1 回目が終わったので, 第 1 章をまとめたものをブログにもアップしたら, 以下のような反響があった.

ちゃんと読んでくださっているようで, 自分の読み込みと纏め方が足りていないなと反省. 次章以降の参考にさせて頂きたい.

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

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

Q22. オブジェクト指向

以下のコードを実行すると何が表示されるか. 尚, ファイル名は constant_1.rb とする.

class C1
  MSG = "msg1"
  MSG2 = "msg2"
  class C2
    MSG = "C2:msg1"
    puts MSG
    puts MSG2
  end
  puts MSG
  puts MSG2
end

以下のように出力されるはず.

C2:msg1
msg2
msg1
msg2

以下, irb での動作確認.

irb(main):001:0> class C1
irb(main):002:1>   MSG = "msg1"
irb(main):003:1>   MSG2 = "msg2"
irb(main):004:1>   class C2
irb(main):005:2>     MSG = "C2:msg1"
irb(main):006:2>     puts MSG
irb(main):007:2>     puts MSG2
irb(main):008:2>   end
irb(main):009:1>   puts MSG
irb(main):010:1>   puts MSG2
irb(main):011:1> end
C2:msg1
msg2
msg1
msg2
=> nil

以下, 解説より抜粋.

Q23. 文法

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

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

以下のように出力されるはず.

SystemExit
End

以下, コマンドラインによる動作確認.

$ ruby systemexit.rb 
SystemExit
End

以下, 解説より抜粋.

  • 組み込み関数 exit は, 例外 SystemExit を発生させる
  • SystemExit を rescue すると, 実行を継続すること出来る, rescue しなければプログラムは終了する

Q24. 標準添付ライブラリ

stringio ライブラリの説明として適切な記述を全て選ぶ.

  1. 文字列を IO オブジェクトと同じように扱える

以下, irb による stringio ライブラリのサンプル.

irb(main):001:0> require 'stringio'
=> true
irb(main):002:0> sio = StringIO.new("hoge", 'r+')
=> #<StringIO:0x0055e719e88ef0>
irb(main):003:0> sio.read
=> "hoge"
irb(main):004:0> sio.rewind
=> 0
irb(main):005:0> sio.read(1)
=> "h"
irb(main):006:0> sio.write("OGE")
=> 3
irb(main):007:0> sio.rewind
=> 0
irb(main):008:0> sio.read
=> "hOGE"

以下, 解説より抜粋.

  • stringio ライブラリは, 文字列に IO オブジェクトと同じインターフェースを持たせる StringIO クラスを含んでいる
  • StringIO クラスは IO クラスを継承しているわけではない (Data クラスを継承している)

フムフム