我希望以下代码块返回不等于0或n的值。但有时它会返回等于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 :(得分:1)
您没有第二次设置random
变量。
固定代码:
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
变量。
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