ジョギング
- 香椎浜 x 3 周
- 暑かったけど, いい汗かけた
日課
- (腕立て x 50 + 腹筋 x 50) x 3
今日のるびぃ ~ Ruby技術者認定試験【Gold】模擬問題を解いてみる (re: 1) ~
もう何度か解いているけど, 再び, Ruby技術者認定試験【Gold】模擬問題 を 3 ~ 5 問くらいずつ解いていく.
Q1. オブジェクト指向
以下のコードの実行結果から__(1)__に当てはまるものを選択する.
# コード class Foo def bar(obj=nil) __(1)__ end private def foo puts "foo" end end Foo.new.bar(Foo.new) # 実行結果 bar
- foo
以下, irb による実行結果.
irb(main):020:0* class Foo irb(main):021:1> def bar(obj=nil) irb(main):022:2> foo irb(main):023:2> end irb(main):024:1> private irb(main):025:1> def foo irb(main):026:2> puts "foo" irb(main):027:2> end irb(main):028:1> end => :foo irb(main):029:0> Foo.new.bar(Foo.new) foo => nil
以下, 解説より抜粋.
- private 以降で定義されたメソッドはそのクラス, またはサブクラス内でのみ使用することが出来る
- private メソッドを使用する時にはレシーバを指定することが出来ない
ちなみに, Foo クラスを継承してしまえば, 継承先からレシーバ付きで呼び出すことが出来る.
... irb(main):036:0> class Bar < Foo irb(main):037:1> def baz irb(main):038:2> foo irb(main):039:2> end irb(main):040:1> end => :baz irb(main):041:0> Bar.new.baz foo => nil
Q2. オブジェクト指向
以下のコードの実行結果から__(1)__に当てはまるものを選択する.
# コード class Foo def foo __(1)__.bar end def bar puts "bar" end end Foo.new.foo # 実行結果 foo
- self
以下, 解説より抜粋.
以下, irb による実行例.
irb(main):001:0> class Foo irb(main):002:1> def foo irb(main):003:2> self.bar irb(main):004:2> end irb(main):005:1> def bar irb(main):006:2> puts "bar" irb(main):007:2> end irb(main):008:1> end => :bar irb(main):009:0> Foo.new.foo bar => nil
以下, プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで の "7.5 self キーワード" より抜粋.
Q3. オブジェクト指向
以下のコードの実行結果から__(1)__に当てはまるものを選択する.
# コード class Hello def greet "Hello " end end class World < Hello def greet __(1)__ + "World" end end puts World.new.greet # 実行結果 Hello World
- super
以下, 解説より抜粋.
- 親クラスの同名メソッドを子クラスから呼び出す場合は
super
というキーワードを使用する
以下, irb による実行例.
irb(main):001:0> class Hello irb(main):002:1> def greet irb(main):003:2> "Hello " irb(main):004:2> end irb(main):005:1> end => :greet irb(main):006:0> class World < Hello irb(main):007:1> def greet irb(main):008:2> super + "World" irb(main):009:2> end irb(main):010:1> end => :greet irb(main):011:0> puts World.new.greet Hello World => nil
フムフム.