2011年10月 8日

[ruby-list:48447] Re: 関数の戻り値について

下田さん

> PascalとCの時の悪い癖で
> ループするものは制御構文だから
> 評価されないものだと思い込んでました。
> eachもメソッドなのですね。

私も Ruby を始めた当初は each の挙動にはまった記憶があります。

他言語の考え方のままだとはまってしまう箇所がありますよね。。
ちなみに 『制御構文だから評価されない』 というのも Ruby においては
正しくないのです。 Ruby においては文は式なので、while や if といった
制御構文も値を返します。

a = if true then 1 else 0 end
p a # 1

> ちなみに
> for c in [splitprm]
> でも同じ結果になったのですが
> for文はObjectクラスのメソッドと解釈しました。

for 文は each メソッドを使って書き直せる [1] ので、for 文を使っても
each メソッドを使った場合と同じようになるのだと思います。
(上で言ったように Ruby では文も値を返すので、for 文が値を返すこと
自体に問題はありません。)

[1] http://ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html#UK

--
信岡 ゆう (NOBUOKA Yu)


投稿者 xml-rpc : 2011年10月 8日 04:08
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/106832
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。