ジョギング
- 香椎浜 x 3
- ゆっくり目のペースで走り始めたけど, なかなかペースが上がらずキツかった
日課
- (腕立て x 50 + 腹筋 x 50) x 3
うなぎ
- 久しぶりに新宮のうなぎ屋さんで
- 美味しかったけど, うなぎが不漁とのことで, 以前と比べると残念な感じだった
奥さんが昼寝から起きないので
奥さんが昼寝からなかなか起きてこないので、クラッカーを使って起こしてみたけど、「ギャー」って叫んだ末にまた寝た。
— Yohei Kawahara(かっぱ) (@inokara) 2018年3月31日
今日のるびぃ ~ Ruby 技術者認定試験 Gold 演習問題を解いていく (14) ~
もう何度か解いているけど, Ruby 技術者認定試験合格教本 の演習問題と模擬試験を数問ずつ解いていく. ポイントは, 問題が何について問われているかがちゃんと理解出来ていること.
Q7. 文法
以下のコードで, case 文の比較に使用されている演算子はどれか.
a = [1, 'Hello', false] a.each do |x| puts case x when String then 'string' when Numeric then 'number' when TrueClass, FalseClass then 'boolean' end end
以下, 解答.
3 ===
以下, irb で実行.
irb(main):001:0> a = [1, 'Hello', false] => [1, "Hello", false] irb(main):002:0> a.each do |x| irb(main):003:1* puts case x irb(main):004:2> when String then 'string' irb(main):005:2> when Numeric then 'number' irb(main):006:2> when TrueClass, FalseClass then 'boolean' irb(main):007:2> end irb(main):008:1> end number string boolean => [1, "Hello", false]
以下, 解説.
- case 文の比較には
===
を使用する ===
はModule#===
Q8. オブジェクト指向
以下の実行結果になるように, [ x ] に記述する適切なコードを全て選ぶ.
class Hoge def fuga(o = nil) [ x ] end private def hoge puts 'Hoge' end end Hoge.new.fuga(Hoge.new)
実行結果.
Hoge
以下, 解答.
1 hoge
以下, irb での実行例.
irb(main):001:0> class Hoge irb(main):002:1> def fuga(o = nil) irb(main):003:2> hoge irb(main):004:2> end irb(main):005:1> private irb(main):006:1> def hoge irb(main):007:2> puts 'Hoge' irb(main):008:2> end irb(main):009:1> end => :hoge irb(main):010:0> irb(main):011:0* Hoge.new.fuga(Hoge.new) Hoge => nil
以下, 解説.
- private メソッドは, レシーバを指定した呼び出しは出来ない
Q9. 実行環境
Object クラスに標準で定義されている組み込み関数ではないものを選ぶ.
以下, 解答.
- NULL
その他の選択肢.
定数 | 用途 |
---|---|
ARGF | スクリプトに指定した引数 (ARGV を参照) をファイル名とみなして, それらのファイルを連結した 1 つの仮想ファイルを表すオブジェクト |
ARGV | Object::ARGV Ruby スクリプトに与えられた引数を表す配列 |
ENV | 環境変数を表すオブジェクトで Hash と同様のインターフェースを持つが, Hash と異なり, ENV のキーと値には文字列しかとること出来ない |
DATA | スクリプトの __END__ プログラムの終り以降をアクセスする File オブジェクト |
以下のようなコードを用意してざっくりと, 各定数の挙動を確認.
p ARGV while line = ARGF.gets p line end p ENV['TEST'] DATA.each do |d| p d end __END__ foo bar baz
実行すると以下のように表示される.
$ TEST=test ruby test.rb test1.txt test2.txt ["test1.txt", "test2.txt"] "aaaa\n" "bbbb\n" "test" "foo\n" "bar\n" "baz\n"
フムフム