ようへいの日々精進XP

よかろうもん

2018 年 04 月 12 日(木)

ジョギング

  • 出張先ラン
  • ホテルから皇居一周で 9 キロくらい, 43 分弱
  • 気持ちよく走れた

日課

  • お休み

本社にて

  • 終日, 調べ物をしたり, コードを書いたりしていた
  • 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
  1. 例外発生

以下, irb による実行例.

...
irb(main):016:0* Cls2.new.foo
NoMethodError: undefined method `ancestors' for #<Cls2:0x0056391600e6f0>

以下, 解説より抜粋.

Q35. 文法

可変長引数について適切な記述を選ぶ.

  1. 可変長引数には * を付ける

以下, 他の選択肢について.

  1. 可変長引数にデフォルト値付引数を指定出来る => 出来ない
  2. 引数はハッシュとして扱える => 扱えない
  3. 一つのメソッドに可変緒う引数を複数指定することが出来る => 出来ない

以下, 解説より抜粋.

  • 可変長引数にデフォルト値は指定出来ない
  • 引数は配列として扱われる
  • 可変長引数は 1 つのメソッドに 1 つしか指定出来ない

以下, 可変長引数の指定する際のフォーマット. (プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで より引用.)

def メソッド名(引数 1, 引数 2, *可変長引数)
  # メソッドの処理
end

Q36. 標準添付ライブラリ

DateTime クラスのオブジェクトに 1 を加算するとどうなるか.

  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 を利用する.

フムフム.