2016-06-21 5 views
-1

私はルビーを学んでいて、基礎を学んでいます。条件付きで遊んだ後、私は次のコードを作った:Ruby条件付きの仕組み

x = 10 
z = 10 
if x==10 && (puts "wow" if x == z) 
    puts "hello" 
end 

私はそれを実行すると私は "うわ"だけだ。 "こんにちは"が決して印刷されない理由を誰かが説明できましたか?

ありがとうございます。

+4

あなたは 'puts'リターンとその結果があなたの条件にどのような影響を与えるかあなた自身に尋ねますか? –

+0

あなたの質問とは別に、あなたが何をしようとしているのか分かりません。 'x!= 10'のとき' '(puts" wow "if x == z)'は実行されないことに注意してください。 'x == z 'ならば' 'wow'を、' 'x = 10'と' z = 10'ならば '' hello ''を入れたいならば、 '' x == z; "うわー"を入れます。 x == 10ならば "hello"を入れます。終わり。 –

答えて

3

nil戻りputsので:

def test_method 
    puts "test" 
end 

t = test_method #=> "test" 
p t #=> nil 

何それが意味することはfalseに評価されますif x==10 && nilです。したがって、それは決して条件の中に入らず、「こんにちは」を印刷します。

+0

私はついにそれを得ました:)。 'if x == 10 &&(p" wow "if x == z)'を使ってテストを行い、 "hello"を見なければなりませんでした。 –

3

戻り値putsは実際にはゼロです。

基本的に、どのような文は言うことnilの値がfalseある

if x==10 && nil 
    puts "hello" 
end 

です。条件にfalseがある場合、式は自動的にfalseに評価されます。したがって、コードブロックは実行されません。