Ruby / Rails是否具有++等价物?

时间:2010-02-24 00:36:13

标签: ruby-on-rails operators

我想我已经习惯了这样的话:

x++

在PHP和Java领域。但是当我在我的Rails代码中尝试这个时,它很合适:

compile error
/users/gshankar/projects/naplan/app/views/answers/new.html.haml:19: syntax error, unexpected ';'
/users/gshankar/projects/naplan/app/views/answers/new.html.haml:23: syntax error, unexpected kENSURE, expecting kEND
...}\n", 0, false);_erbout;ensure;@haml_buffer = @haml_buffer.u...
                              ^
/users/gshankar/projects/naplan/app/views/answers/new.html.haml:26: syntax error, unexpected $end, expecting kEND

我在Ruby / Rails运算符上搜索了一下对++的引用,但找不到任何东西。对于一种专注于写作较少的语言,我觉得有点奇怪的是没有相应的++。我错过了什么吗?

4 个答案:

答案 0 :(得分:12)

试试这个:

x += 1

答案 1 :(得分:4)

x+=1是您在Ruby中可以做的最好的事情。

有关详细说明,请参阅Why doesn't Ruby support i++ or i--​ (increment/decrement operators)?

答案 2 :(得分:3)

你真的应该问自己为什么需要增加/减少。我已经使用Ruby近两年了,并没有注意到增量和减量运算符都丢失了。可能是因为Ruby方式通常使用递增和递减运算符的操作是使用迭代器。

例如each_with_index,它为数组中的每个元素/索引对执行给定的块。

例如,此代码将遍历一个数组,输出每个元素的字符串表示形式及其索引的奇偶校验。

array = ["first", "second", "third","fourth","last"]
array.each_with_index do |object,index|
   puts index % 2 ? "even" : "odd"
   puts object.to_s
end

编辑:删除Fixnum扩展,提供后缀增量,因为它不起作用。经过仔细检查,没有什么可以阻止你添加它,但它会涉及用C编写你的功能,并重新编译。

答案 3 :(得分:1)