前橋です。 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 でも有効なので、代入との対称性からブロックの引数でもエラーにな らないようにして欲しい気がします。