ジョギング
- 香椎浜 x 2 周
- 昨晩走った疲労が抜けていない感じと暑さでバテバテだった
日課
- (腕立て x 50 + 腹筋 x 50) x 3
夕飯
- 冷製パスタを作る
- 冷製といっても茹でたパスタを水でしめてからオリーブオイルで似たベーコンやトマト等を掛けるだけなんだけど, 手軽でそこそこ美味しい
今日のるびぃ ~ Ruby 技術者認定試験合格教本 (Silver/Gold 対応) Ruby 公式資格教科書 模擬試験 (7) オブジェクト指向系問題 (6) ~
irb に動作確認環境は以下の通り.
$ ruby --version ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux] $ irb --version irb 0.9.6(09/06/30)
オブジェクト指向 (16)
以下のコードを実行するとどうなるか.
module Mod def Mod.foo puts 'Mod' end end class Cls1 include Mod def Cls1.foo puts 'Cls1' end end class Cls2 < Cls1 def Cls2.foo puts 'Cls2' end end Cls2.new.foo
以下, 解答.
- 例外発生 (NoMethodError が発生)
以下, irb にて確認.
irb(main):001:0> module Mod irb(main):002:1> def Mod.foo irb(main):003:2> puts 'Mod' irb(main):004:2> end irb(main):005:1> end => :foo irb(main):006:0> irb(main):007:0* class Cls1 irb(main):008:1> include Mod irb(main):009:1> def Cls1.foo irb(main):010:2> puts 'Cls1' irb(main):011:2> end irb(main):012:1> end => :foo irb(main):013:0> irb(main):014:0* class Cls2 < Cls1 irb(main):015:1> def Cls2.foo irb(main):016:2> puts 'Cls2' irb(main):017:2> end irb(main):018:1> end => :foo irb(main):019:0> irb(main):020:0* Cls2.new.foo NoMethodError: undefined method `foo' for #<Cls2:0x00556c0c2f35c8> ...
以下, 解説より抜粋.
- Cls2, Cls1, Mod の foo メソッドは, 何れもクラスメソッドとして定義している
- Cls2.new.foo で呼び出している foo メソッドはインスタンスメソッドである為, 例外 NoMethodError が発生する
オブジェクト指向 (17)
以下のコードを実行すると何が表示されるか.
class A @@a = 0 def initialize @@a = @@a + 1 end def A.a @@a end end class B < A end A.new A.new B.new B.new p A.a
以下, 解答.
- 4 が出力される
以下, irb にて確認.
irb(main):001:0> class A irb(main):002:1> @@a = 0 irb(main):003:1> def initialize irb(main):004:2> @@a = @@a + 1 irb(main):005:2> end irb(main):006:1> irb(main):007:1* def A.a irb(main):008:2> @@a irb(main):009:2> end irb(main):010:1> end => :a irb(main):011:0> irb(main):012:0* class B < A irb(main):013:1> end => nil irb(main):014:0> irb(main):015:0* A.new => #<A:0x0055d9cb989f18> irb(main):016:0> A.new => #<A:0x0055d9cb97fb30> irb(main):017:0> B.new => #<B:0x0055d9cb97d4c0> irb(main):018:0> B.new => #<B:0x0055d9cb972ae8> irb(main):019:0> p A.a 4 => 4
以下, 解説より抜粋.
フムフム.