2012-04-26 6 views
34

私は速記一行はRubyで/ else文場合があり知っている:Ruby on Railsに(elseを付けないで)if文がありますか?

a ? b : c 

ちょうど単一if文の1はありますか?これを書く代わりに、

if a 
    # do something 
end 

これの略記バージョンはありますか?あなたはポストの条件を使用することができます

+1

あなたの言葉でちょっとした修正があります: 'a? b:c'構文は、*文*ではなく、*文*であり、単一の値に評価されます。 –

+3

'a? b:cは「3次表現」と呼ばれている(http://en.wikipedia.org/wiki/%3F :)。 –

+1

@JasonLeBrun:Rubyの何かは式です(つまり値を返します)。 –

答えて

71

(名前を気にしない、それは前にコードを評価されます。そして、条件がtruthy値(すなわちないnilまたはfalse)と評価された場合do_somethingにのみ実行されます)。

do_something if a 
+0

実際に私は間違っています - コメントdelete.d –

+6

もちろん、逆の条件もあります: 'do_something unless a''。 –

+0

カッコで使用するととても便利です。 '関数( 'a'、 'b'、( 'あれば何か'))' - 第3引数は 'something'に応じて' c'または 'nil'になります。 – Markus

5
do_something if a 

これは、最初の(この場合aで)if条件を評価し、それがtrue(又はa、ないfalse又はnilの場合)である場合にはdo_somethingを実行します。 false(またはnil)の場合は、決してdo_somethingを実行しない次のコード行に移動します。

関連する問題