为什么 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