From: matz@... (Yukihiro Matsumoto) Date: 1998-11-07T17:56:59+09:00 Subject: [ruby-list:10703] Re: 式の評価順序は ? まつもと ゆきひろです In message "[ruby-list:10698] 式の評価順序は ?" on 98/11/07, Takao KAWAMURA writes: |w = {} |w[s = $_.chomp.split('').sort.join] = w[s].to_s + $_.chomp + ' ' while gets |w.values.sort.each { |v| print v, "\n" if v =~ / ./ } | |で、教えて頂きたいのですが、2行目において、右辺のsは定まって |いることが保証されていますか? 1.1c6では問題なく動いているよ |うですが、これはたまたまうまく動いているのでしょうか、それと |もRubyの文法で保証されているのでしょうか。 2行目の[]内の式は左辺より先に評価され,かつ一度しか評価され ないことが保証されてます. || self + other || 引数が整数,浮動小数点数,文字列,配列である時に,そのオブジェ クトを返します.それ以外 || の場合には例外 TypeError を発生します. | |とあるのは、改訂が追いついていないのですよね? この時代はよかっ |たなあと思ってしまう。今の仕様の方が美しいとは思うのですが、 |上記のw[s].to_s って変な感じだし…。w[s] || '' よりかすかに |速いようなのですけど。 そうですね.ただ,一番問題になりそうなHashの場合には * fetch(key, ifnone)というメソッドで存在しない時にifnoneを 得るメソッドがあります. * 1.1dからはハッシュ毎にキーが存在しなかった時のデフォルト 値を指定できるようになります. という対応を行っているので,問題はそれほど大きくならないと思 います. まつもと ゆきひろ /:|)