2017-10-06 9 views
1

次のコードブロックで0またはn以外の値を返すようにします。しかし、時にはそれはあなたがrandom可変の第2の時間を設定しなかった0エリクシール再帰ブロックが適切な値を返さない

def get_random(n, num) do 
    random = returns some number 
    IO.puts random 
    if random == n or random == 0 do 
     get_random(n, num) 
    end 
    random 
end 
+0

if文では '' 'ran'''ではなく' '' '' ''にするべきですか? – Pfitz

+0

変数名を変更しました。ありがとう。 – randomcoder

答えて

1

に等しい値を返します。

固定コード:

defmodule GetRandom do 
    def get_random(n, num) do 
    random = Enum.random(0..num) 
    IO.puts random 
    random = if random == n or random == 0 do 
     get_random(n, num) 
    else 
     random 
    end 
    random 
    end 
end 

このコードを簡略化することができます。まず、Enum.randomを使用する場合は、電話後に0を除外する必要はありません。範囲から除外してください。

また、暗黙的な値の戻り値を使用します。関数の最後にある場合は、randomを2回変える必要はありません。

defmodule GetRandom do 
    def get_random(n, num) do 
    random = Enum.random(1..num) 
    IO.puts random 
    if random == n do 
     get_random(n, num) 
    else 
     random 
    end 
    end 
end 
関連する問題