2017-06-03 6 views
0

両側を分離して検査するときに両側が真となる場合は、&&演算子結果はfalseとなります。&&演算子を使用したIF条件、すべて真、最終結果FALSE、ANDキーワードが良い場合

これらの変数と定数はすべてSTRINGですが、ここには数字はありません。

[Budget::STATUS_ACCEPTED[:value], Budget::STATUS_WAITING_PAYMENT[:value]].include? status_was && status == Budget::STATUS_WAITING_PRODUCTION[:value] 

andキーワードの結果trueを使用して同じコード。これがなぜfalseという結果になったのでしょうか?

答えて

0

あなたのオリジナルのコードは常にfalseを返しますfalsestatus_was && status == Budget::STATUS_WAITING_PRODUCTION[:value]ので、おそらく常に返すことになる

[Budget::STATUS_ACCEPTED[:value], Budget::STATUS_WAITING_PAYMENT[:value]].include? (status_was && status == Budget::STATUS_WAITING_PRODUCTION[:value]) 

に変換されます。

この場合、かっこを使用する必要があります。ヒント:優先順位。

[Budget::STATUS_ACCEPTED[:value], Budget::STATUS_WAITING_PAYMENT[:value]].include?(status_was) && 
    status == Budget::STATUS_WAITING_PRODUCTION[:value] 
+0

ああ神、とてもエレガントです。 ANDキーワードを使っていて、優先順位が同じではないので、私はそれに夢中でした... –

+0

@RamondePaulaMarques yea、 '&&'と 'and'は異なります。インタプリタの潜在的な混乱を避けるために '()'を使い、自分自身でコードを読むことを好む –

関連する問題