Project

General

Profile

Actions

Bug #7625

closed

Arrayを継承したオブジェクトのcompactがArrayを返す

Added by mogya@mogya.com (Daisuke Furukawa) over 11 years ago. Updated about 11 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux]
Backport:
[ruby-dev:46807]

Description

現象:
 ruby 1.9.3で、Arrayを継承したクラスのcompactメソッドを呼び出したとき、
Arrayクラスのオブジェクトが帰ってくる

期待している結果
継承したクラスのオブジェクトが帰ってくる

再現コード

$ ruby -v
ruby 1.9.2p320 (2012-04-20 revision 35421) [i686-linux]
$ irb
irb(main):001:0> class Array2 < Array; end
irb(main):002:0> p Array2.new().compact.class.name
"Array2"

$ ruby -v
ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux]
$ irb
irb(main):001:0> class Array2 < Array; end
irb(main):002:0> p Array2.new().compact.class.name
"Array"

他に調べたこと

・ruby 1.9.3p327も、p362 と同じ挙動でした
・compactの代わりにuniqを使っても同様の問題が発生
・1.9.3でも、Stringクラスを使って
  s = String2.new().concat("") だとString2クラスのオブジェクトが帰ってきてます

see also: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/49098


Related issues 2 (0 open2 closed)

Related to Ruby master - Bug #4136: Enumerable#reject should not inherit the receiver's instance variablesClosed12/09/2010Actions
Related to Ruby master - Bug #7768: Inherited Array class missingClosedmatz (Yukihiro Matsumoto)Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0