お疲れ様です。
Takkoです。
現在Ruby学習中のものです。
下記サイトを参考に動的継承のやり方を学習中です。
http://melborne.github.io/2011/06/22/21-Ruby-21-Trivia-Notations-you-should-know-in-Ruby/
ここで紹介されている動的継承のコードを少し書き換えてみました。
ruby
1class Male 2 def laugh; 'Ha ha ha!' end 3end 4 5class Female 6 def laugh; 'Fu fu fu..' end 7end 8 9class Newhalf 10 def laugh; 'Uhu☆' end 11 def angry; 'ぶっ殺す' end 12end 13 14class Me <[Male,Female,Newhalf][rand 3] 15end 16 17puts Me.superclass 18puts Me.new.laugh 19puts Me.new.angry
このコードは見て分かるとおりMeクラスに設定するsuperclassをrandで振り分けその振り分けられたクラスのプロパティを出力する簡単なコードですが、今回Newhalfクラスを追加し、プロパティにangryを追加しました。
この場合の出力結果ではNewhalfがsuperclassに選ばれていない場合、
Me.new.angryでエラーが出ます(当たり前ですが)
この場合だと条件分岐でsuperclassがNewhalf以外の場合はMe.new.angryを出力しないような処理が必要ですか?
例えば
ruby
1if Me.superclass == Newharlf Then 2 puts Me.new.angry 3end
という上記コードを追加しなければなりませんか?
それともMaleとFemaleクラスに
angryのプロパティをnullで持たせるべきですか?
動的継承の方法として正しいやり方を教えてください。
お願いします。
追記
この方のコードは先頭のインシデントがずれてるように思うのですがこれが一般的なのですか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/09 02:31
2017/05/09 02:41