gpt4 book ai didi

没有 else 的 Ruby 三元运算符

转载 作者:数据小太阳 更新时间:2023-10-29 06:19:24 26 4
gpt4 key购买 nike

是否有一个 ruby​​ 惯用法来表示“如果这样做”和“这样做”只是一个简单的命令?

比如我现在在做

object.method ? a.action : nil

将 else 子句留空,但我觉得可能有一种更惯用的方法可以做到这一点,而不必在末尾指定 nil。 (或者,我觉得在这种情况下使用多行代码会很浪费。

最佳答案

作为一般规则:您几乎不需要 Ruby 中的三元运算符。在 C 中需要它的原因是因为在 C 中 if 是一个语句,所以如果您想返回一个值,您必须使用三元运算符,即一个表达式。

在 Ruby 中,一切 都是表达式,没有 语句,这使得三元运算符几乎是多余的。您可以随时更换

cond ? then_branch : else_branch

if cond then then_branch else else_branch end

因此,在您的示例中:

object.method ? a.action : nil

相当于

if object.method then a.action end

正如@Greg Campbell 指出的那样,它又等同于尾随的 if 修饰符形式

a.action if object.method

此外,由于 Ruby 中的 bool 运算符不仅返回 truefalse,而且还返回最后计算的表达式的值,因此您可以将它们用于控制流。这是从 Perl 导入的习语,看起来像这样:

object.method and a.action

关于没有 else 的 Ruby 三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2174419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com