2016-09-14 14 views
1

私はよく慣れていない次のパターンのいくつかのインスタンスでプロジェクトに取り組んでいます。私はそれを呼び出すべきかわからないので、私はそれについてのドキュメントを見つけることができません。次のコンセプトは何ですか? nilfalse:それは基本的にRubyのfalsyオブジェクトに傾いRubyでの条件付き割り当て

if [email protected] = [nil, 2].sample 
    puts 'there was an error' 
else 
    puts @two 
end 

おかげ

+3

ダブルネガティブを避けてください。これを正のテストに反転し、 'puts'ステートメントの順序を逆にすると、これはもっと賢明になります。あなたが慎重でないなら、あなたは本当のヘッドスピナーであるトリプルとネガティブネガティブで終わることができます。 – tadman

+0

これはひどいコードです。 @ tadmanのコメントに加えて、これはもっとはっきりしていないでしょう: '@two = [nil、2] .sample; @two? @ two: "エラーがありました"。 –

+0

'def coin_flip;のようなメソッドを書く方が良いでしょう。 [:head、:tails] .sample;そして、if(coin_flip ==:heads)はここで何が起こっているのかを伝えます。 – tadman

答えて

2

Rubyではnilfalseを除くすべてがtruthyと言われています。

truthy(2)かどうだから例では、そうでなければ(nil)は、エラーメッセージを出力し、@twoの値を印刷します。

私はこの「コンセプト」には名前がないと思います。即ち、

@two = [nil, 2].sample 

if [email protected] 
    puts 'there was an error' 
else 
    puts @two 
end 

@two = [nil, 2].sample[nil, 2]からランダム要素を返すのいずれかnil又は2、及び@two変数インスタンスに割り当て:ここで特別

+0

「真実なら...」譲渡の右側が真実であればそれは意味しますか? –

+0

@JoeEsseyどちらの場合でも '@ two'をお尻にします。それは割り当てられた値の問題です - 真実1( '2')か偽(' nil') –

1

何も、それに相当するません。

条件は自明です。

1

本当にあなたがあれば採用すべき何かがある名前、それ自体が、"Safe assignment in condition"と呼ばれ、括弧内の割り当てをラップの練習を、持っていない条件での代入式の値を使用しての練習このようなコードを書いています。

+0

これは私が探していたものです。私はそれをテストし、それは働いたが、それはちょうど外に見えた。スタイルガイドがこれに対処するのを見てうれしい。 –

関連する問題