ジョギング
- 香椎浜 x 2 周
- 足回り色々とガタがきている感
- 小休止を入れた方がいいかなと思ったり
日課
- (腕立て x 50 + 腹筋 x 50) x 3
義父の一周忌
思い返せばあっという間だった気がするけど, お義父さんが亡くなって一年が経った. 「よしもと」にて我が家だけの一周忌法要. お義父さん, 色々と申し訳ございません.
今日のるびぃ ~ Ruby技術者認定試験【Gold】模擬問題を解いてみる (re: 16) ~
もう何度か解いているけど, 再び, Ruby技術者認定試験【Gold】模擬問題 を 3 ~ 5 問くらいずつ解いていく.
Q49. オブジェクト指向
以下のコードの実行結果として正しいものを選択する.
# コード 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
以下, irb による実行例 (一部, 抜粋).
... irb(main):014:0> Foo.new(Foo.new(Bar.new)) barbarbar foofoofoo => #<Foo:0x0055972a044978>
ややこしいので, 1 個ずつ分解.
irb(main):018:0> Bar.new.foo barbarbar => nil irb(main):019:0> Foo.new(Bar.new) barbarbar => #<Foo:0x0055972a008b80> irb(main):020:0> o = Foo.new(Bar.new) barbarbar => #<Foo:0x00559729f1b808> irb(main):021:0> Foo.new(o) foofoofoo => #<Foo:0x00559729f19738>
Q50. オブジェクト指向
以下のコードの実行結果として正しいものを選択する.
# コード p Class.superclass
- Module
以下, irb による実行例.
irb(main):022:0> p Class.superclass Module => Module
以下, 解説より抜粋.
- Class クラスのスーパークラスは Module クラスである
irb(main):023:0> Class.ancestors => [Class, Module, Object, Kernel, BasicObject]
Q51. オブジェクト指向
以下のコードの説明として正しいものを選択する.
# コード class Foo private def foo puts "foofoofoo" end end puts Foo.new.respond_to?(:foo)
- このコードを実行すると「false」が出力される
以下, irb による実行例 (一部, 抜粋).
... irb(main):007:0> puts Foo.new.respond_to?(:foo) false => nil
以下, 解説より抜粋.
respond_to?
メソッドは, レシーバ (Foo クラス) が引数で指定した名前の public メソッドを持っているか調べるメソッド- 第 2 引数に
true
を指定すれば, 指定した名前の private メソッドを持っているかを調べることが出来る
# private メソッドを持っているか irb(main):008:0> puts Foo.new.respond_to?(:foo, true) true => nil # bar メソッドを追加 irb(main):009:0> class Foo irb(main):010:1> def bar irb(main):011:2> puts "barbarbar" irb(main):012:2> end irb(main):013:1> end => :bar # public メソッドを持っているか irb(main):014:0> puts Foo.new.respond_to?(:bar) true => nil
オープンクラスしてメソッドを追加した場合, 特に指定が無ければ public メソッドになる模様.
フムフム.