yarv-dev:610
From: MAEDA Atusi <maeda-yarv atusi.org>
Date: 16 Sep 2005 13:35:16 +0900
Subject: [yarv-dev:610] Re: 多重代入の値 (was Re: *expr)
Yukihiro Matsumoto <matz ruby-lang.org> writes: > 「多重代入の値」はなにがいいんでしょうね。「値はない」という > のはRuby的にあんまり良くないと思うのですが、だとするとnilと > か「最初の値」とか「最後の値」とか。 x, y = (a, b = *[1, 2]) とかを考えると,「右辺の値そのまま」で良いんじゃないかと思いますが. で,単一の値しか要求しない文脈に多値を渡すと,「最初の値」(値が0個なら nil)とか. 以前の話で, ・多値を作れる(返せる) ・多値を変数に束縛(代入)できる ・多値をメソッドに渡せる ができれば十分という話が出ていて, ・多値を作れる(返せる) *配列 return 値, 値, ... 多重代入の右辺 ・多値を変数に束縛(代入)できる 多重代入 ・多値をメソッドに渡せる ペンディング(配列経由?) という案でしたよね.(メソッド呼び出しと継続呼び出しの機能を同じにすべ きか,という議論もありましたが.) メソッドへ渡す際には,とりあえず変数へ代入することにすれば,大体そろっ たことになるんじゃないでしょうか. あとは,多重代入の右辺や,returnでの式の並びで return 多値式, 多値式 と書いた場合,すべての値が返されるのか,多値のうちの最初の値だけとって, 2つの値が返されるのか,とか. def mv1 return 1, 2 end def mv2 return mv1, 3 end a,b,c=mv2 p c # nil or 3? a,b,c=mv1,4 p c # nil or 4? 前田敦司 -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
598 2005-09-09 17:53 [ko1 atdot.net ] *expr 601 2005-09-11 00:36 ┗[matz ruby-lang.org ] 602 2005-09-16 05:00 ┗[ko1 atdot.net ] 604 2005-09-16 08:21 ┗[matz ruby-lang.org ] 606 2005-09-16 09:12 ┗[ko1 atdot.net ] 608 2005-09-16 09:18 ┗[matz ruby-lang.org ] 多重代入の値 (was Re: *expr) -> 610 2005-09-16 13:35 ┗[maeda-yarv atusi.org] 611 2005-09-16 16:31 ┗[matz ruby-lang.org ]