RUBYの宿題教えてください。at TECH
RUBYの宿題教えてください。 - 暇つぶし2ch444:デフォルトの名無しさん
06/12/26 09:50:48
Ruby では、ブロック引数に値を渡すときの操作は実質的には(多重)代入と同じ。
|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,| で良かったです。すまん。



次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch