我不明白为什么这不起作用; 所有三个元素都应该是字符串.
i = 5
base = "somestring"
base = i.to_s +" #{base} " + i.to_s # => Undefined method '+@'
Run Code Online (Sandbox Code Playgroud)
为什么它将其解释为一种方法?我想也许它与设置base相当于自身的一部分有关,但这似乎有效:
base = "#{base}"
Run Code Online (Sandbox Code Playgroud) 当涉及数字文字时,一元减号似乎具有特殊的优先级。这是有记录的行为吗?
我见过的优先级表(例如here)甚至没有提到点(方法调用)运算符。
在 ruby 2.3.6 上测试:
puts "=== literal integer ==="
# `-` has higher precedence than `.`
p( -1.abs ) # => 1
p( -(1.abs) ) # => -1 (previous line should match this if `.` had higher precedence)
puts "=== literal float ==="
# again `-` has higher precedence than `.`
p( -1.2.abs ) # => 1.2
p( -(1.2.abs) ) # => -1.2 (previous line should match this if `.` had higher precedence)
puts "=== integer …Run Code Online (Sandbox Code Playgroud) ruby ×2