Project

General

Profile

Actions

Bug #408

closed

Array#[]= 要素数が減るとき

Added by shyouhei (Shyouhei Urabe) over 16 years ago. Updated over 13 years ago.

Status:
Rejected
Target version:
-
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

Actions #1

Updated by matz (Yukihiro Matsumoto) over 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

Actions #2

Updated by shyouhei (Shyouhei Urabe) over 16 years ago

  • Status changed from Closed to Open

=begin
仮にそうなら[-2,2]=nilでnilがひとつだけ残る意味が分かりません。
この挙動はやはりバグであると思います。
=end

Actions #3

Updated by matz (Yukihiro Matsumoto) over 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

Actions #4

Updated by shyouhei (Shyouhei Urabe) over 16 years ago

  • Status changed from Open to Rejected

=begin
なるほど。わかりました。
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0