为什么 return 会跳过我的三元运算符产生的值?
Why is return skipping the value produced in my ternary operator?
我有这个代码:
def FirstFactorial(num)
num == 0 ? 1 : num * FirstFactorial(num - 1)
return num
end
然而,结果保留了 return 原始参数。我怎样才能 return 我的三元运算符创建的结果?
它 returns 争论是因为你告诉你这样做。试试这个。
def FirstFactorial(num)
return (num == 0 ? 1 : num * FirstFactorial(num - 1))
end
您需要将 num 设置为等于三元运算符的结果。或者只是 return 就像 Elyasin 的回答一样。
def FirstFactorial(num)
num = num == 0 ? 1 : num * FirstFactorial(num - 1)
return num
end
编辑:
虽然,请记住,在 ruby 中,最后一行的结果是 returned,所以你可以说:
def FirstFactorial(num)
num == 0 ? 1 : num * FirstFactorial(num - 1)
end
只是为了后代的缘故添加尽可能简洁的答案:
Ruby 在方法声明的最后一行使用隐式 returns。
因此:
def FirstFactorial(num)
num == 0 ? 1 : num * FirstFactorial(num - 1)
end
我有这个代码:
def FirstFactorial(num)
num == 0 ? 1 : num * FirstFactorial(num - 1)
return num
end
然而,结果保留了 return 原始参数。我怎样才能 return 我的三元运算符创建的结果?
它 returns 争论是因为你告诉你这样做。试试这个。
def FirstFactorial(num)
return (num == 0 ? 1 : num * FirstFactorial(num - 1))
end
您需要将 num 设置为等于三元运算符的结果。或者只是 return 就像 Elyasin 的回答一样。
def FirstFactorial(num)
num = num == 0 ? 1 : num * FirstFactorial(num - 1)
return num
end
编辑: 虽然,请记住,在 ruby 中,最后一行的结果是 returned,所以你可以说:
def FirstFactorial(num)
num == 0 ? 1 : num * FirstFactorial(num - 1)
end
只是为了后代的缘故添加尽可能简洁的答案:
Ruby 在方法声明的最后一行使用隐式 returns。
因此:
def FirstFactorial(num)
num == 0 ? 1 : num * FirstFactorial(num - 1)
end