gpt4 book ai didi

ruby - 字符串连接错误

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:20 24 4
gpt4 key购买 nike

我遇到了语法错误。我接受这是一个语法错误,但我有点好奇为什么这是一个语法错误。

这完全符合您的预期:

(0..9).each { |n| puts n.to_s + "^2 = " + (n**2).to_s }

这会引发错误:

(0..9).each { |n| puts n.to_s +"^2 = "+ (n**2).to_s }

错误:

NoMethodError: undefined method '+@' for "^2 = ":String

奇怪的是,我可以将第二个加号移到任何地方,Ruby 似乎没有问题,但如果第一个加号碰巧碰到双引号,我会收到语法错误。

为什么会发生这种情况?

最佳答案

n.to_s +"^2 = " 被解析为 n.to_s(+"^2 = "),这在句法上是有效的,意思是“执行对字符串 ^2 = 进行一元加法运算,然后将结果作为参数传递给 to_s”。但是,由于字符串没有一元加法运算(由 +@ 方法表示),您会得到一个 NoMethodError(不是语法错误).

以这种方式解析而不是 n.to_s() + "^2 = " 的原因是,如果以这种方式解析,则 puts +5或者 puts -x 也必须被解析为 puts() + 5puts() - x 而不是 puts( +5)puts(-x) - 在那个例子中,很明显后者是预期的。

关于ruby - 字符串连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5861693/

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