RUBYの宿題教えてください。
■ このスレッドは過去ログ倉庫に格納されています
0444デフォルトの名無しさん
2006/12/26(火) 09:50:48|s, a| と書くのは、 |s, a| = each_elementのように値が入るのと等価になっている。
また、
a, *b = [1, 2, 3]
とすればaに1、bに[2,3]が入るという規則を思い出すと、今回のケースでは、
「多重代入で最初のものだけを得たい」というケースであるから、
|s, *dummy| と書けば s に最初の要素が、 dummy に残りの配列が手に入る
ことになる。
でも今回は dummy は使わないから省きたい。で、こういう要求にこたえて最
近のRubyでは*パートの変数名を省略できるようになっている。つまり、
a, * = [1, 2, 3]
と書くと a に1が入るという操作になる。
というわけで、ブロック引数に |s, *| と書くと、 s に最初の要素が入ることになる。
ちなみに ,* が省かれるとふつうの代入と区別できないため、sには配列が入る。
……なんだけど実際には * はなくても良いのを思い出した。
カンマがあれば良いので |s,| で良かったです。すまん。
■ このスレッドは過去ログ倉庫に格納されています