2016-08-03 185 views
0

我不明白爲什麼多個if語句條件與不等於不起作用。在irbRuby if語句多個條件不等

2.3.0 :009 > H = Hash["a" => 100, "b" => 200, "c" => 1000, "d" => 2000] 
=> {"a"=>100, "b"=>200, "c"=>1000, "d"=>2000} 
2.3.0 :011 > H.each do |key, v| 
2.3.0 :012 >  if (key != "a") || (key != "b") 
2.3.0 :013?>  puts key 
2.3.0 :014?>  end 
2.3.0 :015?> end 
a 
b 
c 
d 
=> {"a"=>100, "b"=>200, "c"=>1000, "d"=>2000} 
2.3.0 :016 > H.each do |key, v| 
2.3.0 :017 >  if key != "a" || key != "b" 
2.3.0 :018?>  puts key 
2.3.0 :019?>  end 
2.3.0 :020?> end 
a 
b 
c 
d 
=> {"a"=>100, "b"=>200, "c"=>1000, "d"=>2000} 
2.3.0 :021 > H.each do |key, v| 
2.3.0 :022 >  if !(key == "a") || !(key == "b") 
2.3.0 :023?>  puts key 
2.3.0 :024?>  end 
2.3.0 :025?> end 
a 
b 
c 
d 
=> {"a"=>100, "b"=>200, "c"=>1000, "d"=>2000} 

但這個工程:

2.3.0 :026 > H.each do |key, v| 
2.3.0 :027 >  if (key == "a") || (key == "b") 
2.3.0 :028?>  puts key 
2.3.0 :029?>  end 
2.3.0 :030?> end 
a 
b 
=> {"a"=>100, "b"=>200, "c"=>1000, "d"=>2000} 

缺少什麼我在這裏?

+4

https://en.wikipedia.org/wiki/De_Morgan%27s_laws – squiguy

+2

「關鍵不是一個」和「關鍵不是一個」將永遠是真實的。因此,你的情況總是如此。 –

回答

0

我想你想實現什麼,可以做副

H.each do |key, v| 
    if (key != "a") && (key != "b") 
    puts key 
    end 
end 

注 - 如果有兩個條件是真||運營商將返回true。

希望有所幫助。

+1

是的,我剛剛發佈它的作品!謝謝 – Daniel

1

if (key == "a") || (key == "b") 

逆實際上是

if !(key == "a") && !(key == "b") 

如果你說「它可以是這樣或那樣的」相反的是「它不可能是這一點,並不能說」