ようへいの日々精進XP

よかろうもん

2018 年 03 月 30 日(金)

ジョギング

  • 香椎浜 x 2 周
  • 左足の甲が...引き続き...

日課

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

気付いたら

もう, 3 月も終わる. 3 月が終わるからか分からないんだが...

Kubernetes

ちゃんと体系的に学びたいなと思ったので.

www.oreilly.co.jp

今日のるびぃ ~ Ruby 技術者認定試験 Gold 演習問題を解いていく (13) ~

もう何度か解いているけど, Ruby 技術者認定試験合格教本 の演習問題と模擬試験を数問ずつ解いていく. ポイントは, 問題が何について問われているかがちゃんと理解出来ていること.

Q4. 文法

以下のコードを実行するとどうなるか.

ary = Array.new(3, 'a')
ary[0].next!
p ary
  1. ["b", "b", "b"] と表示

why?

  • Array.new で ["a", "a", "a"] が作成されるが, 要素の全てが同一の文字列オブジェクト a を参照する
  • そのため, 要素の 1 つを変更すると, 全ての要素が変更される

irb で確認

irb(main):001:0> ary = Array.new(3, 'a')
=> ["a", "a", "a"]
irb(main):002:0> ary[0].next!
=> "b"
irb(main):003:0> p ary
["b", "b", "b"]
=> ["b", "b", "b"]

Q5. オブジェクト指向

以下の実行結果になるように, [ x ] に記述する適切なコードを全て選ぶ.

class X
  [ x ]
  
  def initialize
    @x = 0
  end
end

a = X.new
a.x = 10
puts a.x

以下, 実行結果.

10

以下, 解答.

# 1
attr_reader x:
attr_writer x:

# 2
attr_accessor :x

# 3
def x
  @x
end
def x=(x)
  @x = x
end

why?

  • インスタンス変数の値を読み書きするメソッドをアクセサメソッドと呼ぶ
  • 読み書きであれば attr_accessor を使う (attr_writerattr_reader と同義)

Q6. 組み込みライブラリ

[ x ] に記述する適切なコードを全て選ぶ.

Thread.[ x ] do
...
end
  1. start
  2. new
  3. fork

why?

Thread クラスで, スレッドを生成し実行するメソッドは以下の通り.

  • start
  • new
  • fork

フムフム