2012-03-05 15 views
1

我創建了以下(這是更多的代碼部分,但僅此行是問題):紅寶石錯誤 - 我可以將此塊與{...}轉換成一行嗎?

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語句?

+0

如果你喜歡方法鏈接,你可以做'number_to_test.modulo(divisor).zero?' – 2012-03-05 07:25:48

回答

5

一號線在Ruby中if語句完成 「向後」,可以這麼說:

number_of_divisors += 1 if number_to_test % divisor == 0 

正如預期的那樣,在同一作品與unless以及。

+0

完美!將在10分鐘內接受 – junky 2012-03-05 07:11:19

1

你可以這樣做:

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

會更好。

修正:ruby沒有++。

+0

您確定要運行嗎?因爲它不是有效的Ruby。 – 2012-03-05 07:17:14

+0

-1。抱歉downvote,但我不認爲你可以做紅寶石++! – junky 2012-03-05 07:44:41

+0

@AndrewMarshall&垃圾我錯過了,感謝提醒:) – xdazz 2012-03-05 09:29:31