Isa*_* To 2 ruby ternary-operator
我是Ruby的新手,对三元运算符如何工作有点困惑?:.
根据" 工程软件即服务:使用云计算的敏捷方法 "一书:
每个操作都是对某个对象的方法调用并返回一个值.
从这个意义上说,如果三元运算符表示一个操作,那么它就是对具有两个参数的对象的方法调用.但是,我找不到三元运算符在Ruby文档中表示的任何方法.三元运算符是否表示Ruby中的操作?上面提到的上述说法是错误的吗?Ruby中的三元运算符真的只是if ... then ... else ... end语句的语法糖吗?
请注意:我的问题与如何在Ruby中使用条件运算符(?:)有关?但与那个不一样.我知道如何以该帖子中描述的方式使用三元运算符.我的问题是关于在Ruby中定义三元运算符的位置以及三元运算符是否被定义为一种或多种方法.
Ruby中的三元运算符真的只是if ... then ... else ... end语句的语法糖吗?
是.
从 doc/syntax/control_expressions.rdoc
您也可以使用
?和编写if-then-else表达式:.这三元如果:Run Code Online (Sandbox Code Playgroud)input_type = gets =~ /hello/i ? "greeting" : "other"与此
if表达式相同:Run Code Online (Sandbox Code Playgroud)input_type = if gets =~ /hello/i "greeting" else "other" end
" 根据这本书,"每个操作都是对某个对象的方法调用并返回一个值."从这个意义上讲,如果三元运算符表示一个操作,那么它就是一个带有两个参数的对象的方法调用. "
if,unless,while,和until是不是运营商,它们是控制结构.它们的修饰符版本出现在运算符优先级表中,因为它们需要具有优先级才能被解析.他们只是检查他们的条件是真是假.在Ruby中这很简单,只有false和nil是假的.其他一切都是真的.
运营商之类的东西!,+,*,和[].它们是一元的或二元的.您可以通过调用.methods.sort各种对象来查看它们的列表.例如...
2.4.3 :004 > 1.methods.sort
=> [:!, :!=, :!~, :%, :&, :*, :**, :+, :+@, :-, :-@, :/, :<, :<<, :<=, :<=>, :==, :===, :=~, :>, :>=, :>>, :[], :^, :__id__, :__send__, etc...
Run Code Online (Sandbox Code Playgroud)
请注意,在Smalltalk中,Ruby大量借用,一切都是方法调用.包括控制结构.