ジョギング
- 出張先ラン
- ホテルから皇居一周で 9 キロくらい, 43 分弱
- 気持ちよく走れた
ホテルから皇居をぐるっと45分くらい走ってきた。俺の朝。
— Yohei Kawahara(かっぱ) (@inokara) 2018年4月11日
途中の信号でのストップがなければ東京って走りやすい気がする。
— Yohei Kawahara(かっぱ) (@inokara) 2018年4月11日
日課
- お休み
本社にて
- 終日, 調べ物をしたり, コードを書いたりしていた
- Ruby のクラスメソッドを minitest でテストをする際にどうやってスタブを指定するか等, ちかいうちにブログに纏める予定
- 社内で同様の案件をまとめたチームの方に質問させて頂いたり, コミュニケーション的に充実した一日だった
夕飯
- 有志で新橋に繰り出した
- 雑談が楽しすぎた
今日のるびぃ ~ Ruby 技術者認定試験 Gold 演習問題を解いていく (22) ~
もう何度か解いているけど, Ruby 技術者認定試験合格教本 の演習問題と模擬試験を数問ずつ解いていく. ポイントは, 問題が何について問われているかがちゃんと理解出来ていること.
Q34. オブジェクト指向
以下のコードを実行するとどうなるか.
module M1; end module M2; end class Cls1 include M1 end class Cls2 < Cls1 def foo p self.ancestors end include M2 end Cls2.new.foo
- 例外発生
以下, irb による実行例.
... irb(main):016:0* Cls2.new.foo NoMethodError: undefined method `ancestors' for #<Cls2:0x0056391600e6f0>
以下, 解説より抜粋.
- ancestors は Module クラスのインスタンスメソッド
- レシーバが Module クラスのインスタンス (モジュール), 又は Class クラスのインスタンス (クラス) の場合に有効
- 出題コードの
self.ancestors
のself
は Cls2 クラスのインスタンスを指すので, 例外 NoMethodError が発生する
Q35. 文法
可変長引数について適切な記述を選ぶ.
- 可変長引数には
*
を付ける
以下, 他の選択肢について.
- 可変長引数にデフォルト値付引数を指定出来る => 出来ない
- 引数はハッシュとして扱える => 扱えない
- 一つのメソッドに可変緒う引数を複数指定することが出来る => 出来ない
以下, 解説より抜粋.
- 可変長引数にデフォルト値は指定出来ない
- 引数は配列として扱われる
- 可変長引数は 1 つのメソッドに 1 つしか指定出来ない
以下, 可変長引数の指定する際のフォーマット. (プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで より引用.)
def メソッド名(引数 1, 引数 2, *可変長引数) # メソッドの処理 end
Q36. 標準添付ライブラリ
DateTime クラスのオブジェクトに 1 を加算するとどうなるか.
- 1 日後の時刻を表す
以下, irb による実行例.
irb(main):001:0> require 'date' => true irb(main):003:0> d = DateTime.now => #<DateTime: 2018-04-10T06:11:12+09:00 ((2458218j,76272s,634793738n),+32400s,2299161j)> irb(main):004:0> d + 1 => #<DateTime: 2018-04-11T06:11:12+09:00 ((2458219j,76272s,634793738n),+32400s,2299161j)>
以下, 解説より抜粋.
- DateTime クラスのオブジェクトに 1 を加算すると, 1 日後の時刻を返す
- Date クラスも同様に 1 日後の時刻を返す
- Time クラスのは 1 を加算すると 1 秒後の時刻を返す
# Time クラス irb(main):002:0> t = Time.now => 2018-04-10 06:14:49 +0900 irb(main):003:0> t + 1 => 2018-04-10 06:14:50 +0900 # Date クラス irb(main):001:0> require 'date' => true irb(main):004:0> d = Date.today => #<Date: 2018-04-10 ((2458219j,0s,0n),+0s,2299161j)> irb(main):005:0> d + 1 => #<Date: 2018-04-11 ((2458220j,0s,0n),+0s,2299161j)>
Date クラスで今日の日付が欲しい場合には Date#today を利用する.
フムフム.