2012-03-05 3 views
1

私は(これはより多くのコードの一部ですが、これだけの行が問題である)以下を作成しました:ruby​​エラー - このブロックを{...}で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文ではなくendブロックを考えていますか?

あなたが行うことができ
+0

メソッド連鎖が好きなら、 'number_to_test.modulo(divisor).zero?' –

答えて

5

Rubyでif文は、いわば、 "後方" で行われている1つの行:

number_of_divisors += 1 if number_to_test % divisor == 0 

だけでなく、unlessと同じ作品を期待されるかもしれませんが。

+0

が完璧です! 10分で受け入れるでしょう – junky

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ではないからです。 –

+0

-1。申し訳ありませんが、私はあなたがルビーで++を行うことができるとは思わない! – junky

+0

@AndrewMarshall&junky私はそれを忘れた、思い出させるための感謝:) – xdazz

関連する問題