ジョギング
- 香椎浜 x 3 周
- 今日は朝の 8 時前から走り始めた
- いい感じで涼しくて走り易かった
日課
- (腕立て x 50 + 腹筋 x 50) x 3
奥さんとカラオケデート
- 香椎のジャンカラに朝 10 時前から並んで奥さんとカラオケデート
- 奥さんはボーカルのトレーニングに通っていたりしたので, 歌はウマイと思っているし, 自分もカラオケは好きなので奥さんとの共通の趣味的なものが出来てうれしい
- 最近のカラオケマシンはすごく進化していて, 歌っている様子を録画してインターネットと共有出来たりするのに驚きながら二時間程ワイワイしてとても楽しかった
今日のるびぃ ~ Ruby 技術者認定試験合格教本 (Silver/Gold 対応) Ruby 公式資格教科書 模擬試験 (12) 文法 (2) ~
irb に動作確認環境は以下の通り.
$ ruby --version ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux] $ irb --version irb 0.9.6(09/06/30)
文法 (5)
Q11. 以下の実行結果になるように, [ x ] と [ y ] に記述する適切なコードを選べ.
# コード while [ x ].gets puts $_ if $_ =~ /Ruby/ end [ y ] java programming Ruby programming C programming # 実行結果 Ruby programming
以下, 解答.
- [ x ] = DATA, [ y ] = __END__
以下, スクリプトによる確認.
$ cat q10.rb while DATA.gets puts $_ if $_ =~ /Ruby/ end __END__ java programming Ruby programming C programming $ ruby q10.rb Ruby programming
以下, 解説より抜粋.
- __END__ 以降に記述した内容は, File オブジェクト
DATA
から読み出すことが出来る
以下, ドキュメントより抜粋.
- constant Object::DATA
- スクリプトの __END__ プログラムの終り以降をアクセスする File オブジェクト
- ソースファイルの __END__ 以降は解析, 実行の対象にならないので, その部分にプログラムが利用するためのデータを書き込んでおくことができる
$ cat q10-1.rb p DATA.gets p DATA.gets p DATA.gets __END__ foo bar baz $ ruby q10-1.rb "foo\n" "bar\n" "baz\n"
文法 (6)
Q12. 以下の実行結果になるように, [ x ] に記述する適切なコードを選べ.
# コード def method puts 'Hello, World' end [ x ] def method old_method puts 'Hello, Ruby World' end method # 実行結果 Hello, World Hello, Ruby World
以下, 解答.
- alias old_method method
以下, irb による確認.
irb(main):001:0> def method irb(main):002:1> puts 'Hello, World' irb(main):003:1> end => :method irb(main):004:0> irb(main):005:0* alias old_method method => nil irb(main):006:0> irb(main):007:0* def method irb(main):008:1> old_method irb(main):009:1> puts 'Hello, Ruby World' irb(main):010:1> end => :method irb(main):011:0> irb(main):012:0* method Hello, World Hello, Ruby World => nil
以下, 解説より抜粋.
- alias は, 第一引数に新しいメソッド名, 第二引数に旧メソッド名を指定する
- メソッド名は, 識別子かシンボルで記述する (文字列では記述出来ない)
# シンボル指定 irb(main):001:0> def method irb(main):002:1> puts 'Hello, World' irb(main):003:1> end => :method irb(main):004:0> irb(main):005:0* alias :old_method :method => nil irb(main):006:0> irb(main):007:0* def method irb(main):008:1> old_method irb(main):009:1> puts 'Hello, Ruby World' irb(main):010:1> end => :method irb(main):011:0> irb(main):012:0* method Hello, World Hello, Ruby World => nil # シンボルと識別子のハイブリッド irb(main):013:0> def method irb(main):014:1> puts 'Hello, World' irb(main):015:1> end => :method irb(main):016:0> irb(main):017:0* alias :old_method method => nil irb(main):018:0> irb(main):019:0* def method irb(main):020:1> old_method irb(main):021:1> puts 'Hello, Ruby World' irb(main):022:1> end => :method irb(main):023:0> irb(main):024:0* method Hello, World Hello, Ruby World => nil
文法 (7)
Q18. 以下のコードと同じ実行結果になるコードはどれか.
# コード a, b = [1, 2]
以下, 解答.
a = 1 b = 2
以下, irb にて確認.
irb(main):001:0> a, b = [1, 2] => [1, 2] irb(main):002:0> p a 1 => 1 irb(main):003:0> p b 2 => 2
以下, 解説より抜粋.
- 配列の多重代入
- 左辺には, 右辺の同じ位置にある値が代入される
フムフム.