ruby错误 - 我可以使用{...}将此块转换为单行吗?

时间:2012-03-05 07:06:28

标签: ruby

我创建了以下内容(这是更多代码的一部分,但只有这一行有问题):

if number_to_test % divisor == 0 then number_of_divisors+= 1 end

我想用

来缩短它
if number_to_test % divisor == 0 { number_of_divisors+= 1 }

但我得到

syntax error, unexpected '{', expecting keyword_then or ';' or '\n'
    if number_to_test % divisor == 0 { number_of_divisors+= 1 }
                                      ^
 syntax error, unexpected '}', expecting keyword_end

我以为我可以将长形改为{} 你能告诉我正确的语法(如果可能的话)吗? 也许我只是想做结束块而不是if语句?

3 个答案:

答案 0 :(得分:5)

Ruby中的一行if语句是“向后”完成的,可以这么说:

number_of_divisors += 1 if number_to_test % divisor == 0

正如所料,同样适用于unless

答案 1 :(得分:1)

你可以这样做:

number_of_divisors+= 1 if number_to_test % divisor == 0 

答案 2 :(得分:0)

number_of_divisors+= 1 if number_to_test % divisor == 0

会更好。

修正:红宝石没有++。