【问题标题】: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

            【讨论】:

              猜你喜欢
              • 2014-03-31
              • 2010-10-17
              • 1970-01-01
              • 2011-10-11
              • 2015-01-13
              相关资源
              最近更新 更多