Actions
Bug #408
closedArray#[]= 要素数が減るとき
ruby -v:
Backport:
Description
=begin
以下のように謎のnilが半端に残ります
trunk/bin/ruby -ve'a = %w"A B C D E"; a[-2, 2] = nil; p a'
ruby 1.9.0 (2008-08-06 revision 17576) [x86_64-linux]
["A", "B", "C", nil]
なお1.8では残りません。
ruby_1_8/bin/ruby -ve'a = %w"A B C D E"; a[-2, 2] = nil; p a'
ruby 1.8.7 (2008-08-06 revision 17572) [x86_64-linux]
["A", "B", "C"]
=end
Updated by matz (Yukihiro Matsumoto) about 16 years ago
- Status changed from Open to Closed
=begin
これは1.9での仕様変更です。
1.9ではnilは要素の削除という特別な役割を失いました。
ですから ary[n,m]=nil は ary[n,m]=4 と同様にnilを挿入します。
=end
Updated by shyouhei (Shyouhei Urabe) about 16 years ago
- Status changed from Closed to Open
=begin
仮にそうなら[-2,2]=nilでnilがひとつだけ残る意味が分かりません。
この挙動はやはりバグであると思います。
=end
Updated by matz (Yukihiro Matsumoto) about 16 years ago
=begin
しかし、
a = %w"A B C D E"; a[-2, 2] = 4; p a
は1.8でも["A", "B", "C", 4]になりますから、
a = %w"A B C D E"; a[-2, 2] = nil; p a
が["A", "B", "C", nil]になるというのはむしろ一貫性が増していると思います。
=end
Updated by shyouhei (Shyouhei Urabe) about 16 years ago
- Status changed from Open to Rejected
=begin
なるほど。わかりました。
=end
Actions
Like0
Like0Like0Like0Like0