質問
(任意の継承の深さレベルの) 子のコンストラクター名を取得するにはどうすればよいでしょうか?
説明
Cat
クラスを拡張するクラスを用意しましょうModel
。そしてクラスKitten
を拡張するCat
クラス。
私が望む"Kitten"
ものは、クラスインスタンスを作成するときにコンソール(たとえば)文字列に出力され、Kitten
クラスインスタンスを作成"Cat"
するときに文字列に出力されCat
ます。
トリックは、コンストラクター名を出力するコードがベース (Model
示されている例の場合) クラスに配置されている必要があることです。
注:私は (自分の範囲内で) Javascript と比較して、Ruby が得意です。したがって、「疑似コード」はRubyっぽいものになります=)
# pseudo-Ruby-code
class Model
def initialize
console.log(self.constructor.toString())
end
end
class Cat << Model
# something goes here
end
class Kitten << Cat
# and here too
end
# shows "Model"
Model.new
# shows "Kitten"
Kitten.new
# shows "Cat"
Cat.new