ruby是否需要三元运算符?

时间:2013-02-21 13:33:54

标签: ruby conditional-operator

我今天做了一个小测试:

> false && 1 || 2
> 2
> true && 1 || 2
> 1

因此,如果我们已经可以使用二元运算符,为什么我们需要三元运算符?

> false ? 1 : 2
> 2
> true ? 1 : 2
> 1

因为它不仅仅是别名并且使解析变得复杂。

3 个答案:

答案 0 :(得分:3)

处理你问题中的具体案例......

如果1是不同的值,那么评估为false的怎么办?

总的来说:

没有。您始终可以使用if/else构造替换三元运算符。但这并不方便。

答案 1 :(得分:1)

没有语言需要三元运算符。

三元运算符是众所周知的语言结构。国际文凭组织的人们通常期望它采用脚本式(看起来)语言,所以就是这样。我没有看到拥有它的巨大理由。

答案 2 :(得分:1)

C语言需要条件运算符,因为if / else语句,它不会计算为返回值。但在Ruby中,所有都是一个表达式,所有都有一个返回值,没有语句。

因此,您可以始终用条件表达式替换条件运算符:

foo = bar ? baz : qux

完全等同于

foo = if bar then baz else qux end

在C中,你不能写这个,你必须写

if bar then foo = baz else foo = aux end

导致代码重复。这就是你在C中需要条件运算符的原因。在Ruby中,它是不必要的。

实际上,由于Ruby是面向对象的语言,因此不需要所有条件。你可以改用多态。