Logical operators(논리 연산자)는 true나 false같은 boolean 값들을 변조하거나 연산하는 연산자입니다. Swift는 다음의 세 연산자를 지원해요.
Logical NOT (!a)
Logical AND (a && b)
Logical OR (a || b)
The logical NOT operator (!a) 는 true를 false로 false를 true로 바꾸는 연산자에요.
The logical NOT operator는 변수앞에 공간 없이 사용합니다.
let allowedEntry = false
if !allowedEntry {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
The logical AND operator (a && b)는 a와 b의 값이 모두 참이어야 true를 반환합니다.
하나라도 false이면 false의 값을 리턴하므로, 첫번째 값이 false라면 두번째 값은 평가하지 않고 넘어가요.
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
The logical OR operator (a || b)는 두 값중 한 값이라도 true라면 true를 반환합니다.
AND Operator와 같이 첫번째 값이 true라면 두번째 값은 평가하지 않습니다.
let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
위 세가지의 연산자를 하나로 길게 연결하여 사용할 수 있습니다.
if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
Swift는 여러개의 논리 연산자가 있을 경우 왼쪽에 있는 연산자부터 처리해요.
가끔씩 계산된 값을 가지고 논리연산을 하고 싶다면 소괄호를 사용하여 우선순위를 높일 수 있어요
// enteredDoorCode && passedRetinaScan가 먼저 평가됨
if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"