W języku Ruby, dlaczego poniższe wiersze są prawdziwe?Dlaczego 0 i& 1 to 1, a 1 i& 0 to 0 w rubinach?
0 && 1 == 1
1 && 0 == 0
Dlaczego są różne i nie są jednocześnie 0?
W języku Ruby, dlaczego poniższe wiersze są prawdziwe?Dlaczego 0 i& 1 to 1, a 1 i& 0 to 0 w rubinach?
0 && 1 == 1
1 && 0 == 0
Dlaczego są różne i nie są jednocześnie 0?
Boolean AND operator &&
zwraca drugi argument, jeśli pierwszy nie jest fałszywy. 0
i 1
są true
w wyrażeniach logicznych w języku Ruby. Tylko nil
i false
są fałszywe w wyrażeniach logicznych.
nil && 15 # => nil
15 && 17 # => 17
15 && nil # => nil
0
i 1
nie reprezentują wartości logiczne w Ruby. W rubinie wszystko, co nie jest zgodne z nil
lub false
, jest prawdziwe. Jeśli dodać do tego, że:
AND i & & operatorzy oceniają swój pierwszy argument. Jeśli false, wyrażenie zwraca false; w przeciwnym razie wyrażenie zwraca wartość drugiego argumentu.
Otrzymujesz, że oceniasz true && true
, a następnie zwracany jest wynik drugiego argumentu. Jeśli napiszesz 3 && 4
, dostaniesz 4
!
Oprócz doskonałych odpowiedzi tutaj:
Prawdopodobnie mylić logiczne i bitowe łączeniu.
$ irb
1.9.3-p125 :001 > 1 & 0
=> 0
1.9.3-p125 :002 > 0 & 1
=> 0