加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 字符串连接错误

发布时间:2020-12-16 19:19:58 所属栏目:百科 来源:网络整理
导读:我遇到了语法错误.我接受这是一个语法错误,但我有点好奇为什么它是一个语法错误. 这完全符合您的预期: (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 } 错误: NoMethodEr
我遇到了语法错误.我接受这是一个语法错误,但我有点好奇为什么它是一个语法错误.

这完全符合您的预期:

(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) – 在这个例子中,很明显后者是预期的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读