From: Yukihiro Matsumoto Date: 2008-05-14T00:36:30+09:00 Subject: [ruby-dev:34678] Re: proc {}.arity is zero まつもと ゆきひろです In message "Re: [ruby-dev:34669] proc {}.arity is zero" on Tue, 13 May 2008 11:33:23 +0900, Tanaka Akira writes: |以下のように proc {}.arity が 0 になります。 | |% ./ruby -ve 'p proc {}.arity' |ruby 1.9.0 (2008-05-12 revision 16397) [i686-linux] |0 | |1.8 では -1 です。 | |% ruby-1.8 -ve 'p proc {}.arity' |ruby 1.8.7 (2008-05-07 patchlevel 5000) [i686-linux] |-1 1.8ではproc{}とproc{||}は違う動きをするんですよね。proc{}の 方はproc{|*|}と同じように動作します。ソースを見た限りでは、 YARVはこのふたつを区別する情報を捨ててるみたい。 パーザの方でproc{}をproc{|*|}に展開するという方法もありえるの ですが、面倒な割にはあんまり意味がないような気もするので、こ れは1.9での非互換な点ということにした方が良いような気がしてき ました。