[#46689] [IMPORTANT] 2.0.0 release plan — Yusuke Endoh <mame@...>
ALL COMMITTERS SHOULD READ THIS MAIL! コミッタはこのメール読んで!
5 messages
2012/12/02
[#46707] [ruby-trunk - Feature #7510][Open] irb --help が古い — "sho-h (Sho Hashimoto)" <sho-h@...>
6 messages
2012/12/04
[#46710] [ruby-trunk - Bug #7520][Assigned] irb/completion でインスタンス変数がチェックされていない — "tarui (Masaya Tarui)" <tarui@...>
4 messages
2012/12/05
[#46750] [ruby-trunk - Bug #7575][Open] Struct のメンバーをアクセサで参照できない事がある — "tadf (tadayoshi funaba)" <redmine@...>
4 messages
2012/12/16
[#46766] [ruby-trunk - Bug #7590][Open] parallel test-all で test_settracefunc が cfp consistency error — "tarui (Masaya Tarui)" <tarui@...>
5 messages
2012/12/19
[#46797] [ruby-trunk - Bug #7603][Open] app_factorial と so_ackermann が動かない — "authorNari (Narihiro Nakamura)" <authorNari@...>
5 messages
2012/12/22
[#46798] Re: [ruby-dev:46797] [ruby-trunk - Bug #7603][Open] app_factorial と so_ackermann が動かない
— SASADA Koichi <ko1@...>
2012/12/22
あれぇ,以前よりも増やしたつもりだったんだけど....
[#46807] [ruby-trunk - Bug #7625][Open] Arrayを継承したオブジェクトのcompactがArrayを返す — "mogya@... (Daisuke Furukawa)" <mogya@...>
19 messages
2012/12/26
[#46813] backport93からの移動 [Re: [ruby-core:51175] [Backport93 - Backport #7632] IRB autocompletion bug] — keiju@... (keiju ISHITSUKA)
けいじゅ@いしつかです.
3 messages
2012/12/29
[ruby-dev:46809] [ruby-trunk - Bug #7625][Assigned] Arrayを継承したオブジェクトのcompactがArrayを返す
From:
"shugo (Shugo Maeda)" <redmine@...>
Date:
2012-12-26 15:15:58 UTC
List:
ruby-dev #46809
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/ruby-list/49098
--
http://bugs.ruby-lang.org/