2017-12-24 17 views
2

난 그냥 호기심을 위해서, 반환을 확인하려면 repl.it을 사용하고, 그것은 밝혀졌다 not nil returnes true왜 Lua에서 "nil"이 true가 아닌가?

는 왜? 루아에서 모든 것이 오히려 사실이거나 거짓이어야하기 때문입니까?

Repl.it 링크 : false이다 https://repl.it/repls/SanePastelHarrier

+1

'아니요'가 아닌 표현식의 결과가 무엇이라고 기대합니까? –

답변

4

nil 때문에 부울 변환 :

2.2 부울

부울 타입 나타내는 두 개의 값 falsetrue을 갖는다 전통적인 불리언 값 그러나 불리언은 이 조건 값을 독점하지 않는다 : 루아에서 어떤 값이라도 조건을 나타낼 수있다. 조건부 (예 : 제어 구조에있는 것) 은 falsenil을 모두 false으로하고 다른 것은 true으로 간주합니다. 다른 스크립트 언어와 달리 Lua는 조건부 테스트에서 과 빈 문자열을 모두 true으로 간주합니다.

그리고 not는 부울 인수를 취급 :

3.3 논리 연산자

논리 연산자는 and, ornot이다. 제어 구조와 마찬가지로 모든 논리 연산자는 falsenil 을 모두 false으로, 그 외의 다른 연산자는 true으로 간주합니다.