我发现了三种在
Ruby中编写相同条件的方法:
#1 if 1==1 puts "true" end #2 puts "true" if 1==1 #3 if 1==1 then puts "true" end
为什么我不能这样做?
#4 if 1==1 puts "true"
我不明白:
>为什么在#3中需要然后结束,并且,
>为什么我需要更改顺序才能让#2工作.
声明#4似乎是最自然的写作方式.我不明白为什么不可能.
解决方法
“if x then y end”语法用于多行条件,而“y if x”形式用于简洁的单行条件语句.然后在第一种情况下告诉Ruby条件结束是必要的(因为Ruby不需要像C这样的parens),并且必须告诉Ruby整个if块已经结束(因为它可以是多行) ).
您可以用分号替换then,因为行尾也表示条件的结束.如果你不能摆脱多线的结局.如果你想要一个简洁的单行,可以使用第二种形式或三元运算符.
例如,假设
x = true
以下将评估为真,并返回y
x ? y : => y
!x ? y : =>
在else案例的’:’之后添加一个术语
!x ? y : z => z