【问题标题】:String concatenation?字符串连接?
【发布时间】:2014-02-28 03:13:53
【问题描述】:
我正在尝试理解字符串连接。
为什么第四行的结果和第二行不一样?
counter = 0
"#{counter+1}. test" gives "1. test"
counter = 0
"#{++counter}. test" gives "0. test"
【问题讨论】:
标签:
ruby-on-rails
ruby
ruby-on-rails-4
【解决方案1】:
++ 看起来就像增量运算符。它实际上是两个一元 + 运算符,所以它与普通的旧 counter 相同
【解决方案2】:
Ruby 中没有++ 运算符。 ++counter 说的是“给我 0 的肯定结果的肯定结果”,即 0。
【解决方案3】:
++ 不是 Ruby 中的运算符。如果您想使用预增量运算符,请使用:
counter += 1
【解决方案4】:
因为,++ 不像 C 或 Java 那样是 Ruby 的运算符。
【解决方案5】:
在 Ruby 中,++x 或 --x 什么都不做!实际上,它们表现为多个 unary 前缀运算符:-x == ---x == -----x == ...... 或 +x == +++x == +++++x == ......
要增加一个数字,只需写x += 1。
要递减一个数字,只需写x -= 1。
证明:
x = 1
+x == ++++++x # => true
-x == -----x # => true
x # => 1 # value of x doesn't change.
【解决方案6】:
在 C 中
++counter //Pre Increment
counter++// Post Incremet
但在 Ruby 中 ++ 是不存在的,
所以如果你想增加一个变量,那么你必须简单地写
counter = counter + 1
在你的情况下,你只需要写
"#{counter = counter + 1}. test" gives "1. test"
并将 counter 的值增加 1