질문은루아 조건문
Lua
이어 :
local a = b or 0
local a = b and 1 or 0
B는 어떤 형태 일 수있는 위치.
코드 줄 사이의 차이점은 무엇입니까? 그리고 어떤 경우에 하나 또는 다른 것을 사용합니까?
컨텍스트
나는 다른 서비스에 Lua
코드를 기존 포트를하고 난 이유 코드의 일부 (나는 Lua
개발자 아니에요)에서, 변수를 이해하는 문제에 달렸다 코드의 한 부분과 다른 부분에 할당되면 변수가 다른 부분에 할당됩니다. 오른쪽에있는 변수는 입력 매개 변수이며 의도 한 유형을 알 수있는 방법이 없습니다. 나는이에 루아 문서를 온라인 보면서 나는이에 대한 명확한 답을 찾을 수 없습니다
을 시도 무엇
.
local a1;
print(type(a1)) -- nil
local b1 = a1 or 0
print(b1 .. " " .. type(b1)) -- 0 number
local c1 = a1 and 1 or 0
print(c1 .. " " .. type(c1)) -- 0 number
local a2 = 5
print(type(a2)) -- number
local b2 = a2 or 0
print(b2 .. " " .. type(b2)) -- 5 number
local c2 = a2 and 1 or 0
print(c2 .. " " .. type(c2)) -- 1 number
local a3 = 0
print(type(a3)) -- number
local b3 = a3 or 0
print(b3 .. " " .. type(b3)) -- 0 number
local c3 = a3 and 1 or 0
print(c3 .. " " .. type(c3)) -- 1 number
local a4 = false
print(type(a4)) -- boolean
local b4 = a4 or 0
print(b4 .. " " .. type(b4)) -- 0 number
local c4 = a4 and 1 or 0
print(c4 .. " " .. type(c4)) -- 0 number
local a5 = true
print(type(a5)) -- boolean
local b5 = a5 or 0
print(b5 .. " " .. type(b5)) -- error, concatenating boolean to string
local c5 = a5 and 1 or 0
print(c5 .. " " .. type(c5)) -- 1 number
local a6 = "str"
print(type(a6)) -- string
local b6 = a6 or 0
print(b6 .. " " .. type(b6)) -- str string
local c6 = a6 and 1 or 0
print(c6 .. " " .. type(c6)) -- 1 number
local a7 = ""
print(type(a7)) -- string
local b7 = a7 or 0
print(b7 .. " " .. type(b7)) -- string
local c7 = a7 and 1 or 0
print(c7 .. " " .. type(c7)) -- 1 number
b
은 부울 또는 전무 타입이며 b
이 nil
때 a
0 발생한다 때 and
조건과 코드의 라인에 대한 유일한 유스 케이스가 나에게 보인다 : 나는 내 자신의 테스트를 실행 또는 false
이고 b가 true
인 경우 1입니다.