相关疑难解决方法(0)

字符串连接错误

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

这完全符合您的预期:

(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似乎没有任何问题,但如果第一个碰巧触及双引号,我会收到语法错误.

为什么会发生这种情况?

ruby operators syntax-error

8
推荐指数
1
解决办法
443
查看次数

什么 - @和+ @导致String的NoMethodError

可能的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)

ruby

1
推荐指数
1
解决办法
849
查看次数

标签 统计

ruby ×2

operators ×1

syntax-error ×1