ArrayのサブクラスでArrayのインスタンスメソッドを使用するときの問題
以下はArrayを継承したクラスのインスタンスに対してArrayのインスタンスメソッドを使用するサンプルコードです。
class MyArray < Array
end
m = MyArray.new
n = MyArray.new
added = m + n
puts m.class #MyArray
puts n.class #MyArray
puts added.class #Array
ここでは+
を使用しています。
上記のように、added
はArrayクラスのインスタンスとなっています。
この時に、サブクラスのインスタンスを得たいと考えています。何か方法はありますか?
追記
皆さま丁寧なご回答ありがとうございます。勉強になりました。
既存のメソッドを上書きし、戻り値がsuper classだった場合はsubclassのインスタンスを生成し、戻り値とする実装としました。
sendを使用する必要があり、不恰好ではありますが、gemにしてみました。
https://github.com/mmmmmavo/subper_class/blob/master/spec/subper_class_spec.rb