【问题标题】:Why is return skipping the value produced in my ternary operator?为什么 return 会跳过我的三元运算符中产生的值?
【发布时间】:2015-09-09 21:07:09
【问题描述】:

我有这个代码:

def FirstFactorial(num)

  num == 0 ? 1 : num * FirstFactorial(num - 1)
  return num

end

但是,结果一直返回原始参数。如何返回我的三元运算符创建的结果?

【问题讨论】:

  • 等号太多了..num = 0 ? 1 : num....

标签: ruby operator-keyword ternary


【解决方案1】:

为了后人的缘故,尽可能简单地添加一个答案:

Ruby 在方法声明的最后一行使用隐式返回。

因此:

def FirstFactorial(num)

  num == 0 ? 1 : num * FirstFactorial(num - 1)

end

【讨论】:

  • return 应该自愧不如!
  • 啊!简单高于一切,感谢您的帮助:)
【解决方案2】:

您需要设置 num 等于三元运算符的结果。或者只是按照 Elyasin 的回答返回它。

def FirstFactorial(num)

  num = num == 0 ? 1 : num * FirstFactorial(num - 1)
  return num

end

编辑: 不过,请记住,在 ruby​​ 中,最后一行的结果是返回的,所以你可以说:

def FirstFactorial(num)

  num == 0 ? 1 : num * FirstFactorial(num - 1)

end

【讨论】:

    【解决方案3】:

    它返回参数,因为你告诉这样做。试试这个。

    def FirstFactorial(num)
    
      return (num == 0 ? 1 : num * FirstFactorial(num - 1))
    
    end
    

    【讨论】:

    • 谢谢!我一直把运算符放在括号而不是括号中。
    • 不客气。如果它解决了问题,请随时接受答案。记住,少喝咖啡,多睡觉:-P
    • :P 我本来打算去的,但它说我必须等至少 12 分钟.. 嘘!现在 5 分钟 :)
    猜你喜欢
    • 2016-06-28
    • 2023-03-13
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多