ようへいの日々精進XP

よかろうもん

2018 年 03 月 11 日(日)

あれから 7 年

データセンターで感じた大きな揺れが, 大災害になるとは思いもしなかったけど, あの日の事を思い出すとなんだか涙が出てくる.

とりあえず, ラジオを聞きながら手を合わせた.

ジョギング

  • 香椎浜 x 2 周 + 砂浜 = 40 分程
  • まだまだ足の疲れが抜けていない感

日課

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

夕飯

  • たこ焼きパーリー
  • 紅しょうがが無かったけど美味しかった!!

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

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

Q.47 組み込みモジュール

FileTest モジュールに存在しないメソッドを選択してください.

child?

FileTest モジュールはファイルの検査関数を集めたモジュールで, 以下のようなメソッドが用意されている.

[8] pry(main)> FileTest.methods(false)
=> [:world_readable?,
 :writable?,
 :writable_real?,
 :world_writable?,
 :executable?,
 :executable_real?,
 :file?,
 :size?,
 :owned?,
 :grpowned?,
 :pipe?,
 :symlink?,
 :socket?,
 :blockdev?,
 :chardev?,
 :setuid?,
 :setgid?,
 :zero?,
 :sticky?,
 :identical?,
 :empty?,
 :size,
 :directory?,
 :exist?,
 :exists?,
 :readable?,
 :readable_real?]

Q.48 オブジェクト指向

下記のコードの説明として正しいものを選択してください.

# コード
class Foo
  def initialize(obj)
    obj.foo
  end
  def foo
    puts "foofoofoo"
  end
end
class Bar
  def foo
    puts "barbarbar"
  end
end
Foo.new(Bar.new)

このコードを実行すると「barbarbar」と出力される

以下, 実行例.

[1] pry(main)> class Foo
[1] pry(main)*   def initialize(obj)  
[1] pry(main)*     obj.foo    
[1] pry(main)*   end    
[1] pry(main)*   def foo  
[1] pry(main)*     puts "foofoofoo"    
[1] pry(main)*   end    
[1] pry(main)* end  
=> :foo
[2] pry(main)> class Bar
[2] pry(main)*   def foo  
[2] pry(main)*     puts "barbarbar"    
[2] pry(main)*   end    
[2] pry(main)* end  
=> :foo
[3] pry(main)> Foo.new(Bar.new)
barbarbar
=> #<Foo:0x00005647a1131728>
[4] pry(main)> Foo.new(Bar.new).foo
barbarbar
foofoofoo
=> nil

Q.49 オブジェクト指向

下記のコードの実行結果として正しいものを選択してください.

# コード
class Bar
  def foo
    puts "barbarbar"
  end
end

class Foo < Bar
  def initialize(obj)
    obj.foo
  end
  def foo
    puts "foofoofoo"
  end
end
Foo.new(Foo.new(Bar.new))

以下, 解答.

barbarbar
foofoofoo

以下, 実行例.

[1] pry(main)> class Bar
[1] pry(main)*   def foo  
[1] pry(main)*     puts "barbarbar"    
[1] pry(main)*   end    
[1] pry(main)* end  
=> :foo
[2] pry(main)> 
[3] pry(main)> class Foo < Bar
[3] pry(main)*   def initialize(obj)  
[3] pry(main)*     obj.foo    
[3] pry(main)*   end    
[3] pry(main)*   def foo  
[3] pry(main)*     puts "foofoofoo"    
[3] pry(main)*   end    
[3] pry(main)* end  
=> :foo
[4] pry(main)> Foo.new(Foo.new(Bar.new))
barbarbar
foofoofoo
=> #<Foo:0x000055cda923c770

ちなみに, Foo.new(Bar.new) したら, 以下の通り.

[10] pry(main)> Foo.new(Bar.new)
barbarbar
=> #<Foo:0x000055cda99eea68

ふむふむ.