[#48450] 1.8.7と1.9.2の挙動の違いについて — "Jun'ya Shimoda" <jun-shimo@...>

下田です。

13 messages 2011/10/09

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

From: "Y. Nobuoka" <nobuoka@...>
Date: 2011-10-07 19:08:20 UTC
List: ruby-list #48447
下田さん

> 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)

In This Thread