[#37248] [Feature:1.9] Enumerator#inspect — "Yusuke ENDOH" <mame@...>

遠藤です。

12 messages 2008/12/02

[#37337] [Feature #841] Object#self — "rubikitch ." <redmine@...>

Feature #841: Object#self

13 messages 2008/12/09

[#37513] Current status of 1.9.1 RC1's issues — "Yugui (Yuki Sonoda)" <yugui@...>

Hi, folks

14 messages 2008/12/20
[#37516] Re: Current status of 1.9.1 RC1's issues — Masatoshi SEKI <m_seki@...> 2008/12/20

咳といいます。

[#37576] [BUG:trunk] encoding for stdio's — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

11 messages 2008/12/24

[ruby-dev:37451] Re: [BUG:trunk] Array#push with no argument on a frozen array

From: Yukihiro Matsumoto <matz@...>
Date: 2008-12-15 15:08:18 UTC
List: ruby-dev #37451
まつもと ゆきひろです

In message "Re: [ruby-dev:37440] [BUG:trunk] Array#push with no argument on a frozen array"
    on Mon, 15 Dec 2008 10:56:58 +0900, "Yugui (Yuki Sonoda)" <yugui@yugui.jp> writes:

|Freezeされた配列から0個popしようとするとArgumentErrorが発生します。
|(1.8.7ではTypeError)

え、RuntimeErrorではなくて? 1.9ではfreezeされたオブジェクト
の操作でTypeErrorではなくRuntimeErrorが出ます。これは1.9での
仕様変更。

|[1, 2].freeze.pop(0)  #=> ArgumentError
|
|一方Freezeされた配列に0個pushしようとすると何も起きません。
|
|[1, 2].freeze.push()
|
|これは意図されたことでしょうか?

単にエラーチェックの順番の問題ですねえ。popではfreezeチェッ
ク(rb_ary_modify)が先に来ているのでエラーになり、pushでは引
数の数のチェックが先なのでエラーになる前にnopであることを判
別できているわけです。

境界ケースだと思うのでどっちでも良いと思うのですが、揃えた方
が誤解は少ないでしょうね。どっちが良いと思います?

                                まつもと ゆきひろ /:|)

In This Thread