From: Shugo Maeda Date: 2001-06-13T15:24:01+09:00 Subject: [ruby-dev:13563] Re: yield *[[]] 前田です。 At Wed, 13 Jun 2001 14:28:25 +0900, matz@zetabits.com (Yukihiro Matsumoto) wrote: > その後つらつらと考えたのですが、やはりCommon Lisp流多値はい > くつか(Ruby的には)問題があるようです。 (snip) > * 主値と副値 > > 通常の代入では主値しか与えないというのは、意外に使いにく > いような。Common Lispでもあまり活用されてないみたい。 現状の仕様での、 a = ... a, = ... の代りに、 *a = ... a = ... を使うようになるというだけの話なので、互換性の問題がなければ、そ れほど使い勝手が違うようには思いません。 Q. 主値だけ欲しいのですが? A. a,のように,を付けてください。 というやり取りはたまにあるので、後者のような仕様だったら、それな りに活用されるのではないでしょうか。 # ふと思ったのですが、CGI#paramsなんかで便利かもしれません。 > * a,b,c = 1..3みたいのは意外に便利 > > to_aryを活用したものが使えなくなるでしょうね。あるいは > Perlみたいにコンテキストによって違うものを返すようにする > (wantarrayみたいのが必要ですね)ということも考えられない > でもないですが、より複雑ですね。 返す側でコンテクストによって処理をしなくとも、受け取る側が明示的 に、 a, b, c = *(1..3) などで展開できればよいのではないでしょうか。 暗黙の展開はそれほど必要ないような気がします。 -- 前田 修吾