2016-06-21 7 views
-1

Ich lerne Rubin und gehe durch die Grundlagen.Ruby Conditionals Mechanismus

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

Als ich es bekam ich nur laufen „wow“: Nach dem Spiel mit conditionals den folgenden Code habe ich gemacht. Könnte jemand erklären, warum "Hallo" nie gedruckt wird?

Vielen Dank.

+4

Fragen Sie sich, was '' puts'' zurückgibt und wie sich dieses Ergebnis auf Ihre Bedingung auswirkt? –

+0

Abgesehen von Ihrer Frage, ich bin mir nicht sicher, ob ich verstehe, was Sie versuchen zu tun. Beachten Sie, dass '(puts" wow "wenn x == z)' nicht ausgeführt wird, wenn 'x! = 10'. Wenn du 'puts'" wow "willst, wenn' x == z' und 'puts'" hallo "wenn sowohl' x = 10' als auch 'z = 10', dann' ifx == z; setzt "wow"; setzt "Hallo" wenn x == 10; Ende. –

Antwort

3

Da puts kehrt nil:

def test_method 
    puts "test" 
end 

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

Was das bedeutet, ist if x==10 && nil, die false ausgewertet werden. Daher wird es nie in den Zustand und drucken "Hallo".

+0

Ich habe es endlich :). Habe einen Test mit 'if x == 10 && (p" wow "wenn x == z)' gemacht und ich habe das "Hallo" gesehen, vielen Dank für deine Antwort. –

3

Der Rückgabewert puts ist eigentlich Null.

Wesentlichen, was die Aussage sagt, ist

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

Der Wert von nilfalse ist. Jedes Mal, wenn in einer Bedingung ein false ist, wird der Ausdruck automatisch als false ausgewertet. Daher wird der Codeblock nicht ausgeführt.