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

下田です。

13 messages 2011/10/09

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

From: "Jun'ya Shimoda" <jun-shimo@...>
Date: 2011-10-07 18:27:10 UTC
List: ruby-list #48446
信岡様
早速 and 毎度アドバイスして頂きありがとうございます。

vzx01036様もお返事頂きありがとうございます。


> 以下のように書き換えるとわかりやすいのではないでしょうか。
>
> ケース 3' (ケース 3 とほぼ等価)
>  def calc( prm )
>    splitprm = prm.split( // )
>    result = 0
>    b = Proc.new{ |c| result += c.to_i }
>    splitprm.each( &b )
>  end
なるほど!
PascalとCの時の悪い癖で
ループするものは制御構文だから
評価されないものだと思い込んでました。
eachもメソッドなのですね。

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


>個人的には、何を返事するかは、オブジェクト指向として大切なことだと思っ
ているの

>で、「return」で返事の内容を明示することをお勧めしたいのですが……。

確かに最後に何を返すか明示する方がPascal出身の私も分かりやすいです。
でも、るびきちさんの「Ruby逆引きハンドブック」によると
「最後の式にわざわざ「return」を付けるのは、Ruby的に恰好悪い」
そうなので、頑張ってreturnを回避してたらこんな目に会ってしまいました。
どうしたものやら。


> そんなわけなんでバグではないですね。
了解です。



-- 
 A   A         Name   : 下田 純也 (Jun'ya Shimoda)
(o'.'o) _/     e-mail : jun-shimo@nifty.com
(> ~ <)/       Blog   : http://d.hatena.ne.jp/JironBach/
               Twitter: http://twitter.com/JironBach/


In This Thread