ジョギング
- お休み
- 相変わらず左ひざの内側が痛い
日課
- お休み
天神デート
天神の角屋で修行している。
— Yohei Kawahara(かっぱ) (@inokara) 2018年3月18日
- 奥さんと天神デート
- ルイビトンに寄ったりしながら, フェで奥さんが試着しまくっている間に, 天神の角屋で一杯
- 奥さんはワインレッドのかわいい靴を購入, 俺は何も無し...でも, 楽しかった
今日のるびぃ ~ Ruby 技術者認定試験 Gold 演習問題を解いていく (1) ~
もう何度か解いているけど, Ruby 技術者認定試験合格教本 の演習問題と模擬試験を数問ずつ解いていく. ポイントは, 問題が何について問われているかがちゃんと理解出来ていること.
Q1. 実行環境
Ruby の -I
オプションの説明として正しいものを全て選ぶ.
以下, 解説より抜粋.
-I
で指定したパスが直接 RUBYLIB に追加されることは無い-r
で指定したファイルを読み込む
ちなみに, $LOAD_PATH を参照した.
irb(main):001:0> $LOAD_PATH => ["/home/kappa/.rbenv/rbenv.d/exec/gem-rehash", "/home/kappa/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib", "/home/kappa/.rbenv/versions/2.5.0/lib/ruby/site_ruby/2.5.0", "/home/kappa/.rbenv/versions/2.5.0/lib/ruby/site_ruby/2.5.0/x86_64-linux", "/home/kappa/.rbenv/versions/2.5.0/lib/ruby/site_ruby", "/home/kappa/.rbenv/versions/2.5.0/lib/ruby/vendor_ruby/2.5.0", "/home/kappa/.rbenv/versions/2.5.0/lib/ruby/vendor_ruby/2.5.0/x86_64-linux", "/home/kappa/.rbenv/versions/2.5.0/lib/ruby/vendor_ruby", "/home/kappa/.rbenv/versions/2.5.0/lib/ruby/2.5.0", "/home/kappa/.rbenv/versions/2.5.0/lib/ruby/2.5.0/x86_64-linux"
以下のようなコードで $LOAD_PATH の追加を試す.
p $LOAD_PATH.grep(/test_path/)
以下のように実行すると...
$ mkdir ./test_path $ ruby -I test_path load_path.rb ["/home/kappa/sandbox/ruby-exam-gold/test_path"]
test_path
が追加されていることが解る. ちなみに, test_path
の存在については Ruby 側ではチェックされないので, ディレクトリが存在しなくてもパスを追加することは出来る.
Q2. 文法
以下のコードを実行すると何が表示されるか.
x, *y = *[0, 1, 2] p x, y
以下のように表示される.
0 [1, 2]
実際に irb で実行してみると, 以下のように出力される.
irb(main):001:0> x, *y = *[0, 1, 2] => [0, 1, 2] irb(main):002:0> p x, y 0 [1, 2] => [0, [1, 2]]
以下, 解説より抜粋.
- 左辺の x には最初の要素が格納される
- y には
*
(Splat Operator) が付いているので, 残りの全要素を配列として格納される
ちなみに, Splet Operator を付けていない場合には...
irb(main):003:0> x, y = [0, 1, 2] => [0, 1, 2] irb(main):004:0> p x, y 0 1 => [0, 1]
上記のように, 2 は切り捨てられる.
Q3. 文法
[ x ] に記述すると, 以下の実行結果にならないコードを全て選ぶ.
puts [ x ]
以下, 実行結果.
0.8
演算結果が Float にならない式を選ぶ必要がある.
- 4/5 (Integer クラス同士の演算結果は整数となり, 小数点以下は丸められる)
- 4/5r (Integer クラスと Rational クラスの演算結果は Rational クラスのオブジェクトを生成する)
以下, 実行結果.
irb(main):005:0> 4/5 => 0 irb(main):006:0> 4/5r => (4/5) # to_f することで 0.8 (Float クラスになる) irb(main):007:0> (4/5r).to_f => 0.8 irb(main):010:0> (4/5r).class => Rational
ふむふむ.