ようへいの日々精進XP

よかろうもん

2018 年 04 月 26 日(木)

ジョギング

日課

  • (腕立て x 50 + 腹筋 x 50) x 3

頭痛

  • 酷すぎて, ギョーム中にしばし横になっていた
  • なんだろなあ

下痢

  • 夕方以降は下痢
  • なんだかなあ

今日のるびぃ ~ Ruby技術者認定試験【Gold】模擬問題を解いてみる (re: 5) ~

もう何度か解いているけど, 再び, Ruby技術者認定試験【Gold】模擬問題 を 3 ~ 5 問くらいずつ解いていく.

Q13. オブジェクト指向

以下の実行結果にならないようにするために __(1)__ に当てはまるものを選択する.

# コード
class Foo
  def bar
    self.foo
  end
  __(1)__
  def foo
    puts "foo"
  end
end
Foo.new.bar


# 実行結果
foo

private

以下, irb による実行例.

irb(main):001:0> class Foo
irb(main):002:1>   def bar
irb(main):003:2>     self.foo
irb(main):004:2>   end
irb(main):005:1>   private
irb(main):006:1>   def foo
irb(main):007:2>     puts "foo"
irb(main):008:2>   end
irb(main):009:1> end
=> :foo
irb(main):010:0> Foo.new.bar
NoMethodError: private method `foo' called for #<Foo:0x00556abbdde7c8>
        from (irb):3:in `bar'
        from (irb):10
        from /path/to/.rbenv/versions/2.1.10/bin/irb:11:in `<main>'

以下, 解説より抜粋.

  • private メソッドはレシーバを指定して呼び出すことは出来ない
  • 何も記述しない場合は public メソッドになる為, 記述しなくても foo メソッドを呼び出すことが出来る

Q14. Enumerable#inject

以下のコードの実行結果から __(1)__ に当てはまるものを選択する.

# コード
puts [1,2,3].__(1)__

# 実行結果
6

inject(0){|sum, i| sum + i }

以下, irb による実行例.

irb(main):011:0> puts [1,2,3].inject(0){|sum, i| sum + i }
6
=> nil

以下, 解説より抜粋.

  • inject メソッドは引数で初期値を取り, レシーバの要素の先頭から順にブロック内の処理を実行し結果を求めていくメソッド
  • each メソッドに置き換えると以下のようになる
irb(main):001:0> n = 0
=> 0
irb(main):002:0> [1, 2, 3].each do |x|
irb(main):003:1*   n += x 
irb(main):004:1> end
=> [1, 2, 3]
irb(main):005:0> p n
6
=> 6

Q15. 整数と浮動小数点数の演算

以下の実行結果にならないようにするために __(1)__ に当てはまるものを選択する.

# コード
puts __(1)__


# 実行結果
2.5

5/2

以下, irb による実行例.

irb(main):006:0> 5/2
=> 2
irb(main):007:0> 5.0/2
=> 2.5
irb(main):008:0> 5/2.5
=> 2.0
irb(main):009:0> 5.0/2.0
=> 2.5

以下, 解説より抜粋.

フムフム.