나는 예를했습니다 : 그것은 단지 숫자 2를 사용하는 것과 같은, 그리고 그것이 사실 반환 것처럼 분명히 2 만 2Fixnum && Fixnum이 왜 마지막 번호를 반환하고 false가 아닌지?
-1
A
답변
1
동일하기 때문에이 코드에
if 22 && 2 == 2
puts "true"
else
puts "false"
end
이 보인다 루비에서 논리적으로 거짓 인 것은 nil
과 false
입니다. 그 밖의 모든 것, 0
, 빈 문자열, 빈 배열, 빈 해시 등은 입니다. 모두은 논리적으로 간주됩니다. 이것은 true
또는 false
과 같은 리터럴 값으로 강제 캐스팅 할 필요가 없으므로 Ruby가 &&
및 ||
과 같은 부울 연산자를 처리하는 방법에 영향을 미칩니다.
이와 같이 22 && 2
은 논리적으로 거짓 일 수 없습니다. &&
운영자가 작동하는 방법은 휴식이나 평가를 확인하는 마지막 요소를 반환 :
1 && 2 && 3
# => 3
1 && false && 3
# => false
1 && 2 && nil
# => nil
false
이 존재하는 두 용어 중 하나 인 경우 false
을 반환 할 것이다 &&
작업이 유일한 방법. 이 같이 발생할 수 있습니다
1 && !1
# => false
이 때문에 !1
evalutes false
로입니다.
&&
의 결과가 항상 부울 값인 일부 언어에 익숙 할 수도 있지만 여기서는 그렇지 않습니다.
업데이트 : 여기서 가리키는 무엇 @meagar하는 것은 코드가 실제로으로 평가된다
22 && (2 == 2)
에 코스 상당하다 : true
로 평가
22 && true
.
JavaScript, Python 및 * 많은 * 동적 언어와 동일합니다. – meagar
여기서 무엇을 묻고 있습니까? * * 당신의 표현이 * 모든 * 언어에서'거짓 '으로 평가되는 이유는 무엇입니까? 나는 당신의'&&'가 실패 할 언어가 없다는 것을 알고,'22' 또는'2 == 2'가 boolean'false'에 던져 짐을 암시합니다. 하나는 0이 아닌 수이고 다른 하나는 부울 인 '참'입니다. – meagar
나는 22 && 2가 두 숫자를 비교하고 있다고 생각했지만, 그 일이 일어나지 않았습니다. 이제 tadman의 대답을 읽은 후에 이해합니다. –