[ruby-list:50858] Re: [質問]自己代入を繋げた場合の動作について

From: Nobuyoshi Nakada <nobu@...>
Date: 2019-12-26 07:56:15 UTC
List: ruby-list #50858
なかだです。


# 送信アドレス間違えてたので再送


On 2019/12/25 10:51, Shugo Maeda wrote:
> 前田です。
>
> On Wed, 25 Dec 2019 00:06:37 +0900
> "関優輔" <t181d035@gmail.com> wrote:
>> aをIntegerの変数として、1を代入した状態で
>> a += a += a += a += 5
>> を実行してからaを出力すると期待する出力は48ですが実際には9が出力されます。
>> 48の根拠は(5+1)*2*2*2=48ということと、Cを含む他の言語で48になるということです。


少なくともCでは、同じ変数に対する副作用が複数ある式の結果は未定義だったはずです。


> 過去に議論があったか思い出せませんが、自己代入の+=の場合は右辺を先に評
> 価するような仕様の方が便利だったかもしれないですね。

左から右へ評価、というのが基本方針ですから。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
     中田 伸悦

In This Thread