gpt4 book ai didi

带有 i++++i 的 Ruby 括号语法异常

转载 作者:数据小太阳 更新时间:2023-10-29 08:14:14 25 4
gpt4 key购买 nike

为什么会抛出语法错误?我希望它是相反的方式......

>> foo = 5
>> foo = foo++ + ++foo
=> 10 // also I would expect 12...
>> foo = (foo++) + (++foo)
SyntaxError: <main>:74: syntax error, unexpected ')'
foo = (foo++) + (++foo)
^
<main>:75: syntax error, unexpected keyword_end, expecting ')'

在使用 Ruby 1.9.2 的 tryruby.org 上尝试过。


在 C# (.NET 3.5) 中,这工作正常并产生另一个结果:

var num = 5;
var foo = num;
foo = (foo++) + (++foo);
System.Diagnostics.Debug.WriteLine(foo); // 12

我猜这是运营商优先级的问题?谁能解释一下?

为了完整性...
C 返回 10
Java 返回 12

最佳答案

Ruby 中没有++ 运算符。 Ruby 将你的 foo+++++foo第一个 作为二元加法运算符,其余作为第二个 上的一元正运算符foo.

因此,您要求 Ruby 将 5 与(plus plus plus plus)5 相加,结果为 5,因此结果为 10。

当您添加圆括号时,Ruby 会在第一个右圆括号之前寻找第二个操作数(用于二进制加法),并因为没有找到而报错。

您从哪里得到 Ruby 支持 C 风格的 ++ 运算符的想法?把那本书扔掉。

关于带有 i++++i 的 Ruby 括号语法异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6509423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com