Issue #7625 has been reported by mogya@mogya.com (Daisuke Furukawa). ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625 Author: mogya@mogya.com (Daisuke Furukawa) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2012-12-26 12:11
on 2012-12-26 16:16
Issue #7625 has been updated by shugo (Shugo Maeda). Category changed from DOC to core ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-35098 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2012-12-26 16:16
Issue #7625 has been updated by shugo (Shugo Maeda). Category set to DOC Status changed from Open to Assigned Assignee set to matz (Yukihiro Matsumoto) Target version set to 2.0.0 前田です。 mogya@mogya.com (Daisuke Furukawa) wrote: > 現象: > ruby 1.9.3で、Arrayを継承したクラスのcompactメソッドを呼び出したとき、 > Arrayクラスのオブジェクトが帰ってくる この変更自体は、r30148で導入された意図的な変更だと思います。 * array.c (rb_ary_dup): should copy contents only. no instance variable, no class would be copied. it would affect methods #sort, #reject, #transpose, #uniq, #compact, and #shuffle. [ruby-core:33640] ただ、まつもとさんが http://bugs.ruby-lang.org/issues/4136#note-7 でflattenなどは サブクラスのインスタンスを返すという指摘に対し、 If a method is originally defined in Enumerable, i.e. its return value (Array) is a collection of values from enumerable. (snip) I don't think so. #flatten is not an enumerable method. Please point out if we missed some other methods. と言っているんですが、compact/uniq/transpose/shuffleもEnumerableでもともと定義されて いないですよね。 このあたりの一貫性の無さを正当化するような理由はあるでしょうか? > まつもとさん とくに理由がないのであれば、これらのメソッドはサブクラスのインスタンスを返すようにするか、flattenなども Arrayを返すようにした方がよいのではないかと思います。 ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-35097 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: DOC Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-01 17:38
Issue #7625 has been updated by mrkn (Kenta Murata). r39004 (#7768) で uniq は修正されたようですね。 ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-35765 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-06 07:38
Issue #7625 has been updated by matz (Yukihiro Matsumoto). Enumerableで定義されていないArray独自のメソッドはサブクラスを返したほうが良いと思います。 直すタイミングはいつがいいのかな。 Matz. ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-35887 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-06 07:42
> Enumerable$B$GDj5A$5$l$F$$$J$$(BArray$BFH<+$N%a%=%C%I$O%5%V%/%i%9$rJV$7$?$[$&$,NI$$$H;W$$$^$9!#(B > $BD>$9%?%$%_%s%0$O$$$D$,$$$$$N$+$J!#(B $B$$$^$+$i(B2.0$B$K(Bspec$B%l%Y%k$NJQ99$,F~$k$N$OH?BP$7$^$9!#G0$N$?$a!#(B
on 2013-02-07 14:08
Issue #7625 has been updated by usa (Usaku NAKAMURA). 結局のところ、1.9.3の挙動は仕様だったのでしょうか? それとも実はミス? それによって、trunkに既にcharliesomeが先走って入れちゃった変更を revertすべきかどうかとか(した方がいいと私個人は強く思っていることを 表明しておきます>mameさん)、1.9.3で現状rubyspecが仕様と思って記述 してしまっているのを変更した上で1.9.3でもバグとして直すべきかどうか、 などといった判断に影響が出ます。 ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-35980 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-07 15:06
Issue #7625 has been updated by matz (Yukihiro Matsumoto). 正直なところ、どうして1.9.3と2.0の挙動が異なってしまっているのか経緯を把握してないので適切な答えはできません。 ただ、ArrayにあってEnumerableにないメソッドはレシーバーのクラスを返したほうが良いと思います。 Matz. ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-35985 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-07 15:12
$B$3$s$K$A$O!"$J$+$`$i(B($B$&(B)$B$G$9!#(B
In message "[ruby-dev:46940] [ruby-trunk - Bug #7625]
Array$B$r7Q>5$7$?%*%V%8%'%/%H$N(Bcompact$B$,(BArray$B$rJV$9(B"
on Feb.07,2013 23:06:05, <matz@ruby-lang.org> wrote:
>
$B@5D>$J$H$3$m!"$I$&$7$F(B1.9.3$B$H(B2.0$B$N5sF0$,0[$J$C$F$7$^$C$F$$$k$N$+7P0^$rGD0.$7$F$J$$$N$GE,@Z$JEz$($O$G$-$^$;$s!#(B
1.9.3$B$H(B2.0.0$B$O$D$$@hF|$^$GF1$8$G$7$?!#(B
[Bug #7768] $B$r<u$1$F!"(Bcharliesome$B$,(B r39004
$B$G(Btrunk$B$rJQ99$7$F(B
$B$7$^$C$?$N$G!"5sF0$K0c$$$,H/@8$7$F$$$^$9!#(B
$B%P%0$J$iD>$9$N$b$d$`$J$7$H;W$$$^$9$,!"(B1.9.3$B$G$O;EMM$@$C$?(B($B$H(B
$B$3$l$^$GM}2r$5$l$F$-$?(B)$B$N$G!"$3$N%?%$%_%s%0$G(B2.0.0$B$N5sF0$,JQ(B
$B$o$C$F$7$^$C$?$3$H$,LdBj$K$J$C$F$$$^$9!#(B
>
$B$?$@!"(BArray$B$K$"$C$F(BEnumerable$B$K$J$$%a%=%C%I$O%l%7!<%P!<$N%/%i%9$rJV$7$?$[$&$,NI$$$H;W$$$^$9!#(B
$BF146$G$9$,!"$$$D!"$,$$$$$N$G$7$g$&$M!#(B
$B$=$l$G$O!#(B
on 2013-02-07 15:13
Issue #7625 has been updated by mame (Yusuke Endoh). matz (Yukihiro Matsumoto) wrote: > 正直なところ、どうして1.9.3と2.0の挙動が異なってしまっているのか経緯を把握してないので適切な答えはできません。 #7768 の修正で入った r39004 の副作用で、2.0 の挙動は 1.9.2 の挙動に戻りました。 > ただ、ArrayにあってEnumerableにないメソッドはレシーバーのクラスを返したほうが良いと思います。 たまたま現在の挙動が matz の好みということになります。 2.0.0-rc2 はその挙動でいきましょう。それで重大な問題が報告されなければ、p0 もそのままで。 なお、rails 等に影響を与えない公算が高いと思っています (1.9.2 と同じ挙動のはずなので) 。 1.9.3 を変えるかどうかはうささんにお任せします。 -- Yusuke Endoh <mame@tsg.ne.jp> ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-35986 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-07 15:31
$B$3$s$K$A$O!"$J$+$`$i(B($B$&(B)$B$G$9!#(B
In message "[ruby-dev:46942] [ruby-trunk - Bug #7625]
Array$B$r7Q>5$7$?%*%V%8%'%/%H$N(Bcompact$B$,(BArray$B$rJV$9(B"
on Feb.07,2013 23:12:55, <mame@tsg.ne.jp> wrote:
> 1.9.3 $B$rJQ$($k$+$I$&$+$O$&$5$5$s$K$*G$$;$7$^$9!#(B
$B%P%0$@$C$?$N$J$i(B1.9.3$B$bEvA3JQ$($^$9!#(B
$B;EMM$@$C$?$N$J$iEvA3$=$N$^$^$G$9!#(B
($BCfESH>C<$JNc$,$"$k$N$OGD0.$7$F$^$9$,(B)
$B$I$C$A$J$s$G$7$g$&$+(B...
$B$=$l$G$O!#(B
on 2013-02-07 15:31
Issue #7625 has been updated by matz (Yukihiro Matsumoto). ふむ。まあ、同感なんですが、それはそれとして charliesome には「もうRCだから変更すんな」と釘を刺すべきでは無いですかね。 Matz. ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-35988 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-07 15:45
Issue #7625 has been updated by mame (Yusuke Endoh). matz (Yukihiro Matsumoto) wrote: > ふむ。まあ、同感なんですが、それはそれとして charliesome には「もうRCだから変更すんな」と釘を刺すべきでは無いですかね。 IRC で話した感じでは反省してくれてました。 というか、もう RC だから遠藤がもっと監視してる体制でないといけないんですが、全然余力がなくてすみません。 多分明日の晩には ruby_2_0_0 ブランチを切るんで、そこからリリースまではなるべく全コミットを把握するように努めます。 -- Yusuke Endoh <mame@tsg.ne.jp> ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-35994 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-08 06:04
Issue #7625 has been updated by shugo (Shugo Maeda). mame (Yusuke Endoh) wrote: > > ただ、ArrayにあってEnumerableにないメソッドはレシーバーのクラスを返したほうが良いと思います。 > > たまたま現在の挙動が matz の好みということになります。 いや、そうなっていないと思います。 $ ./ruby -ve 'class Foo < Array; end; p Foo[2,1,3].sort.class' ruby 2.0.0dev (2013-02-08 trunk 39154) [i686-linux] Foo sortはEnumerableにもあるメソッドなので、まつもとさんの考えでは常にArrayを返す べきということになると思います。 # 将来ArrayにしかないメソッドがEnumerableにも追加されたらどうするかとか考える # と、本当にまつもとさんの方針でよいのかもちょっと検討の余地があるように思いますが。 > 2.0.0-rc2 はその挙動でいきましょう。それで重大な問題が報告されなければ、p0 もそのままで。 > なお、rails 等に影響を与えない公算が高いと思っています (1.9.2 と同じ挙動のはずなので) 。 現状まつもとさんの意図が正しく反映されているか疑問ですので、r39004はいったん revertすべきだと思います。 これがバグ修正扱いなのであれば2.0.0が出た後で直してもよいと思いますし、仕様変更 なのであれば今さら入るのはおかしいのではないですか? ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-36038 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-08 06:11
>> 2.0.0-rc2 $B$O$=$N5sF0$G$$$-$^$7$g$&!#$=$l$G=EBg$JLdBj$,Js9p$5$l$J$1$l$P!"(Bp0 $B$b$=$N$^$^$G!#(B >> $B$J$*!"(Brails $BEy$K1F6A$rM?$($J$$8x;;$,9b$$$H;W$C$F$$$^$9(B (1.9.2 $B$HF1$85sF0$N$O$:$J$N$G(B) $B!#(B > > $B8=>u$^$D$b$H$5$s$N0U?^$,@5$7$/H?1G$5$l$F$$$k$+5?Ld$G$9$N$G!"(Br39004$B$O$$$C$?$s(B > revert$B$9$Y$-$@$H;W$$$^$9!#(B > $B$3$l$,%P%0=$@507$$$J$N$G$"$l$P(B2.0.0$B$,=P$?8e$GD>$7$F$b$h$$$H;W$$$^$9$7!";EMMJQ99(B > $B$J$N$G$"$l$P:#$5$iF~$k$N$O$*$+$7$$$N$G$O$J$$$G$9$+(B? $B5DO@$NM>CO$,$"$k$J$iLdEzL5MQ(Brevert$B$K0lI<!#$"$o$F$F?J$a$F5H$,=P$k$3$H$O>/$J$$$h!#(B
on 2013-02-08 06:27
Issue #7625 has been updated by shugo (Shugo Maeda). #7768の方にもコメントしましたので、議論の続きは(もしあれば)そちらでやりましょう。 ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-36042 Author: mogya@mogya.com (Daisuke Furukawa) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-08 12:05
Issue #7625 has been updated by usa (Usaku NAKAMURA). Status changed from Assigned to Closed #7768 を残してこちらは閉じます。 ---------------------------------------- Bug #7625: Arrayを継承したオブジェクトのcompactがArrayを返す https://bugs.ruby-lang.org/issues/7625#change-36053 Author: mogya@mogya.com (Daisuke Furukawa) Status: Closed Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-linux] 現象: 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/...
on 2013-02-08 12:15
$B%A%1%C%H<+BN$NBP=h$O8~$3$&$K=q$-$^$7$?DL$j(B revert $B$G$$$$$G$9!#(B $BH=CG$,JQ$o$C$F$9$_$^$;$s!#(B $B0J2<!"8@$$Lu!#(B 2013/02/08 shugo (Shugo Maeda) <redmine@ruby-lang.org>: > $B$3$l$,%P%0=$@507$$$J$N$G$"$l$P(B2.0.0$B$,=P$?8e$GD>$7$F$b$h$$$H;W$$$^$9$7!"(B $B!V<B$O$3$l$O%P%0$@$C$?$s$@$h!*!*!W$H8@$C$F5sF0$rJQ$($k$N$O7h$7$F(B $B9%$^$7$$$3$H$G$O$J$$$G$9$h$M!#:#2s$O(B matz $B$,4uK>$rL@3N$K8@$C$F$k(B $B$N$G!"$J$k$Y$/$=$N2j$rE&$s$G$*$-$?$/$F!#(B $B$b$A$m$s$I$3$+$G%-%j$rIU$1$kI,MW$O$"$k$N$G$9$,!"$=$N%-%j$O(B rc2 $B$@$H9M$($F$$$k!J(Brc2 $B$^$G$ODL>o$N%P%0=$@5$r5v2D$7$F$^$9$7!K$N$G!"(B $B8=>u$G9T$1$k$J$i9T$-$?$+$C$?$N$G$7$?!#(B $B!J$J$*(B rc1 $B$,(B release candidate $B$NL>$K$=$0$o$J$$<BBN$K$J$C$?$N$O(B $B%9%1%8%e!<%k%_%9$G$9!#$3$l$bH?>J$7$F$^$9!K(B > $B;EMMJQ99$J$N$G$"$l$P:#$5$iF~$k$N$O$*$+$7$$$N$G$O$J$$$G$9$+(B? $B8@$&$^$G$b$J$$$N$G8@$C$F$^$;$s$,(B matz $B$@$1$OJL3J$@$H;W$$$^$9!#(B $B1sF#$O(B 2.0.0 $B$NJQ99$KBP$9$k5qH]8"$r;}$C$F$k$D$b$j$G$9$,!"$=$l$O(B $B%j%j!<%9$r1_3j$K?J$a$k$3$H$,L\E*$J$N$G!":#2s$O$`$7$m5qH]8"$rH/F0(B $B$7$J$$$[$&$,%j%j!<%9$,1_3j$K?J$`$H;W$C$?$N$G$7$?!#(B $B!J$7$+$7(B matz $B$,$I$N$/$i$$JQ$($?$,$C$F$$$k$+$rFI$_4V0c$($?46$b!K(B $B0J>e!"8@$$Lu$G$7$?!#(B $B$H$K$+$/!"$$$m$$$mH=CG8m$C$?$jM%=@ITCG$KJQ$($?$j$7$F$9$_$^$;$s!#(B $B:#8e$b$7$P$7$P8m$k$H;W$$$^$9$,!"@829$+$/$40U8+$/$@$5$$!#(B $B$J$*!">e5-$NDL$j(B rc2 $B0J9_$O5qH]8"A43+$NM=Dj$G$9!#(B
on 2013-02-08 13:41
$BA0ED$G$9!#(B 2013$BG/(B2$B7n(B8$BF|(B 20:15 Yusuke Endoh <mame@tsg.ne.jp>: > $B%A%1%C%H<+BN$NBP=h$O8~$3$&$K=q$-$^$7$?DL$j(B revert $B$G$$$$$G$9!#(B > $BH=CG$,JQ$o$C$F$9$_$^$;$s!#(B $B$$$(!"N;2r$G$9!#(B $B1sF#$5$s$r@U$a$k$D$b$j$O$J$$$N$G$9$,!"0l1~8@$$Lu$K$b%3%a%s%H$7$^$9!#(B > 2013/02/08 shugo (Shugo Maeda) <redmine@ruby-lang.org>: >> $B$3$l$,%P%0=$@507$$$J$N$G$"$l$P(B2.0.0$B$,=P$?8e$GD>$7$F$b$h$$$H;W$$$^$9$7!"(B > > $B!V<B$O$3$l$O%P%0$@$C$?$s$@$h!*!*!W$H8@$C$F5sF0$rJQ$($k$N$O7h$7$F(B > $B9%$^$7$$$3$H$G$O$J$$$G$9$h$M!#:#2s$O(B matz $B$,4uK>$rL@3N$K8@$C$F$k(B > $B$N$G!"$J$k$Y$/$=$N2j$rE&$s$G$*$-$?$/$F!#(B > > $B$b$A$m$s$I$3$+$G%-%j$rIU$1$kI,MW$O$"$k$N$G$9$,!"$=$N%-%j$O(B rc2 > $B$@$H9M$($F$$$k!J(Brc2 $B$^$G$ODL>o$N%P%0=$@5$r5v2D$7$F$^$9$7!K$N$G!"(B > $B8=>u$G9T$1$k$J$i9T$-$?$+$C$?$N$G$7$?!#(B Redmine$B$r8+$k$+$.$j!"%P%0$+;EMMJQ99$+!"$^$?(B2.0.0$B$G=$@5$9$Y$-$+$H$$$&E@$K$D$$$F!"(B $B$^$D$b$H$5$s$,L@3N$K0U8+I=L@$r$7$F$$$J$$$H$$$&G'<1$G$7$?!#(B # $B!VD>$9%?%$%_%s%0$O$$$D$,$$$$$N$+$J!#!W$H$*$C$7$c$C$F$^$7$?$7!#(B $B$^$D$b$H$5$s$+$i7kO@$,=P$F$$$k$N$G$"$l$P!"H?BP$O$7$^$;$s!#(B >> $B;EMMJQ99$J$N$G$"$l$P:#$5$iF~$k$N$O$*$+$7$$$N$G$O$J$$$G$9$+(B? > > $B8@$&$^$G$b$J$$$N$G8@$C$F$^$;$s$,(B matz $B$@$1$OJL3J$@$H;W$$$^$9!#(B $B$O$$!"$=$l$OM}2r$7$F$$$^$9!#(B $B$7$+$7!">e5-$N$h$&$JM}M3$G!":#2s$N7o$O$^$@7kO@$,=P$F$$$J$$$H$$$&M}2r$G$7$?!#(B $B$^$?!"$^$D$b$H$5$s$N0U8+$O(B($BF|K\8l$G=q$+$l$?$?$a(B)charliesome$B$KFO$$$F$$$^$;$s$G$7$?$7!#(B $B1sF#$5$s$,3F(Bissue$B$N>\:Y$^$GGD0.$9$k$N$OFq$7$$$H;W$$$^$9$N$G!"$3$&$$$&;~$OJ]<iE*$J(B $BH=CG$r$7$F$$$?$@$$$?J}$,$h$$$N$G$O$J$$$+$H;W$$$^$9!#(B
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.