前橋です。

From: matz / netlab.co.jp (Yukihiro Matsumoto)
Subject: [ruby-list:15869] Re: Windows95 で  Tk
Date: Wed, 4 Aug 1999 01:56:03 +0900

> |残念ながら Windows 版のことはよくわかりません。しかし UNIX 上でも、
> |mine-0.0.4 は ruby-1.3.6 では動かなくなっています。以下、パッチです。もっ
> |とスマートなやり方もあるかも。
> 
> あー、複数の値のうち最初の二つを取り出したいんですよね。
>
> |-    tools.each {|klass, keys|
> |+    tools.each {|*args|
> |+      klass, keys = args

↑この修正をしたときは理由がよくわかっていなかったのですが、ちょっと調べ
てみました。

ここで tools は配列の配列です。内側の配列は size が 1 または 2 のどちら
かです。よって tools.each の引数は、size が 1 または 2 のどちらかの配列
を受け取ることになります。

以前の ruby は全然問題なかったのですが、ruby 1.3.6 では size が 2 の時は
問題ないのですが size が 1 だったときに wrong # of arguments (1 for 2) 
というエラーが出ます。

たぶん arity が導入されてからこうなったのだと思いますが、

klass, keys = [' '] 

は 1.3.6 でも有効なので、代入との対称性からブロックの引数でもエラーにな
らないようにして欲しい気がします。