我遇到了语法错误.我接受这是一个语法错误,但我有点好奇为什么它是一个语法错误.
这完全符合您的预期:
(0..9).each { |n| puts n.to_s + "^2 = " + (n**2).to_s }
Run Code Online (Sandbox Code Playgroud)
这会引发错误:
(0..9).each { |n| puts n.to_s +"^2 = "+ (n**2).to_s }
Run Code Online (Sandbox Code Playgroud)
错误:
NoMethodError: undefined method '+@' for "^2 = ":String
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我可以在任何地方移动第二个加号,Ruby似乎没有任何问题,但如果第一个碰巧触及双引号,我会收到语法错误.
为什么会发生这种情况?
可能的DUPLICATE Rails 3中的字符串连接
我使用Ruby 2.0.0-p247.
+@
并且-@
会导致NoMethodError
当你不小心用空格.
如果你把一个字符串棍子+
和-
,你会看到NoMethodError
pry> +""
NoMethodError: undefined method `+@' for "\n":String
pry> -""
NoMethodError: undefined method `-@' for "\n":String
Run Code Online (Sandbox Code Playgroud)
更多错误示例:
1.
pry> x + "\n"
NameError: undefined local variable or method `x' for main:Object
pry> x +"\n"
NoMethodError: undefined method `+@' for "\n":String
Run Code Online (Sandbox Code Playgroud)
2.
pry> def x
pry> def x; 1; end
pry> x +"\n"
NoMethodError: undefined method `+@' for "\n":String
Run Code Online (Sandbox Code Playgroud)
3.
pry> class X
pry> …
Run Code Online (Sandbox Code Playgroud)