ruby – 字符串连接错误

前端之家收集整理的这篇文章主要介绍了ruby – 字符串连接错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了语法错误.我接受这是一个语法错误,但我有点好奇为什么它是一个语法错误.

这完全符合您的预期:

(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 =”的原因是如果它以这种方式解析然后将5或者放置-x也必须被解析为puts()5和puts() – x而不是puts(5)和puts(-x) – 在这个例子中,很明显后者是预期的.

原文链接:https://www.f2er.com/ruby/270691.html

猜你在找的Ruby相关文章