在块内进行后增量有什么问题

时间:2013-12-12 17:04:01

标签: ruby

以下是触发错误的代码:

#!/home/yuri/.rbenv/shims/ruby
a = []
a += [1, 2, 3].map { |v|
    v++
}

这就是它所说的:

/home/yuri/_/1.rb:5: syntax error, unexpected '}'

这一次运行没有错误:

#!/home/yuri/.rbenv/shims/ruby
a = []
a += [1, 2, 3].map { |v|
    v++
    v
}

但是这不是:

#!/home/yuri/.rbenv/shims/ruby
a = []
a += [1, 2, 3].map { |v|
    v++ if false
    v
}

输出:

/home/yuri/_/1.rb:6: syntax error, unexpected '}', expecting keyword_end

有没有办法解释这种行为?或者至少,如何避免它?我正在运行ruby-2.0,如果有的话。

1 个答案:

答案 0 :(得分:5)

Ruby没有后增量运算符。

以下声明

v++
v

相当于

v + (+v)

请改用v += 1。 (这可能不是你可能知道的后增量。)