
a ?? b을 통해 옵셔널 표현식 a 값을 언래핑한다. 값이 없다면 (즉 널이라면) 디폴트 값으로 준 b를 리턴한다.
a != nil ? a! : b를 한 단어로 간략화한 게 ??라고 생각하자.a가 널이 아니면 b 값은 고려되지 않는다. 곧바로 a 값이 리턴된다.var default_clr = "red"
var defined_clr: String?
var clr = defined_clr ?? default_clr
// if nil then default
(a...b)를 통해 a에서 b까지 범위를 전달하는데, 이때 b까지의 값을 포함하는 데 주의하자.
파이썬에서는 range가 range(a, b)에서 b-1까지이다.
(a..<b)를 통해 a 이상 b 미만까지의 범위를 나타낸다.
let arr = [1, 2, 3, 4]
for i in 0..arr.count {
print(arr[i])
// 1, 2, 3, 4 printed
}
파이썬의 range와 동일한 기능이다. 배열 인덱스가 0에서 시작하기 때문에 유용하다.
특정 값에서 시작해 배열의 끝 인덱스까지 추출한다. 시작 방향과 끝 방향 둘 중 한 가지만 설정하면 된다.
for num in arr[2...] {
print(num)
// 3, 4 printed
}
for num in arr[...2] {
print(num)
// 1, 2, 3 printed
}
for num in arr[..<2] {
print(num)
// 1, 2 printed
}
!a를 통해 a의 불리언 값 부정a $$ b를 통해 a와 b모두 true일 때 true 반환, 그렇지 않다면 모두 falsea || b를 통해 a와 b 모두 false일 때 false 반환, 그렇지 않다면 모두 trueAND와 OR 모두 left-associative한 연산자이기 때문에 모든 변수의 참 거짓을 확인할 필요 없이 변수 하나의 값으로 결과를 특정할 수 있다면 나머지 변수의 값을 확인하지 않는다.
모두 If 문과 같은 조건문에서 주로 사용된다. AND, OR의 경우 어떤 경우에 각 변수가 불리언 값을 가지는지 확인하자. 괄호를 통해서 순서 역시 조절할 수 있고, 가독성을 살리자.