2017-11-29 8 views

答えて

0
offset = 0 
first_loop = true 
loop do 
    offset += 1 unless first_loop 

    code here 

    first_loop = false 
end 
1

あなたの試みの問題がいくつかあります。まず、文if offset = 0は、offsetが0に等しいかどうかをチェックしていません。それはに設定されています。ゼロに設定されています。等価性をチェックするには、==を使用します。

を第二に、あなたが最初の問題を解決したとしても、あなたの状態のelse決して火災、offsetので、常にゼロになり、したがって、インクリメントすることはありませんでしょう。

第三に、あなたはifブロックには何の関係も持っていない場合、あなたは、nilを置くだけelseに直接スキップする必要はありません。

if offset == 0 
    else 
    offset += 1 
    end 

さらに良いことに、ちょうど式を否定してスキップelse完全:

if offset != 0 
    offset += 1 
    end 

はまた、while doは、有効なRubyの構文ではありません。 while true doのように書くか、loop doを使用してください。

より一般的に言えば、インクリメントされたオフセットの前にあなたには、いくつかのコードを実行する必要がある場合は、ちょうど前にそのコードを入れてインクリメントされたオフセット:

offset = 0 
loop do 
    # your code goes here 

    offset += 1 
end 

をそしてここで、より「ルビーっぽい」方法ですそれを行うには:

0.step do |offset| 
    # your code goes here 
end 

これが役に立ちます。

+0

ああ!私はどこが間違っているのか分かります。ありがとうございました! – Yeager

関連する問題