조건부 연산자(a ? b : c)만 있습니다.(a가 true이면 b를 반환 false이면 c를 반환)
let b = 10
var a = 5
a = b
// a is now equal to 10
let (x, y) = (1, 2)
// x is equal to 1, and y is equal to 2
if x = y {
// This isn't valid, because x = y doesn't return a value.
}
Addition (+)
Subtraction (-)
Multiplication (*)
Division (/)
1 + 2 // equals 3
5 - 3 // equals 2
2 * 3 // equals 6
10.0 / 2.5 // equals 4.0
"hello, " + "world" // equals "hello, world"
let three = 3
let minusThree = -three // minusThree equals -3
let plusThree = -minusThree // plusThree equals 3, or "minus minus three"
var a = 1
a += 2
// a is now equal to 3
복합 할당 연산자는 값을 반환하지 않습니다. 예를 들어 let b = a += 2라고 쓸 수 없습니다.
Equal to (a == b)
Not equal to (a != b)
Greater than (a > b)
Less than (a < b)
Greater than or equal to (a >= b)
Less than or equal to (a <= b)
또한, Swift는 두 개의 객체 참조가 모두 동일한 객체 인스턴스를 참조하는지 여부를 테스트하는 데 사용하는 두 개의 Identity Operators(=== 및 !==)를 제공합니다. 자세한 내용은 Identity Operators를 참조하세요.
1 == 1 // true because 1 is equal to 1
2 != 1 // true because 2 isn't equal to 1
2 > 1 // true because 2 is greater than 1
1 < 2 // true because 1 is less than 2
1 >= 1 // true because 1 is greater than or equal to 1
2 <= 1 // false because 2 isn't less than or equal to 1
두 개의 튜플이 동일한 유형과 동일한 수의 값을 갖는 경우 비교할 수 있습니다.
한 번에 한 값씩 왼쪽에서 오른쪽으로 비교됩니다.
이 두 값이 비교되고 해당 비교 결과에 따라 튜플 비교의 전체 결과가 결정됩니다. 모든 요소가 동일하면 튜플 자체도 동일합니다.(1, "zebra") < (2, "apple") // true because 1 is less than 2; "zebra" and "apple" aren't compared
(3, "apple") < (3, "bird") // true because 3 is equal to 3, and "apple" is less than "bird"
(4, "dog") == (4, "dog") // true because 4 is equal to 4, and "dog" is
("blue", -1) < ("purple", 1) // OK, evaluates to true
("blue", false) < ("purple", true) // Error because < can't compare Boolean values
Swift 표준 라이브러리에는 요소가 7개 미만인 튜플에 대한 튜플 비교 연산자가 포함되어 있습니다. 7개 이상의 요소가 있는 튜플을 비교하려면 비교 연산자를 직접 구현해야 합니다.
question ? answer1 : answer2
if question {
answer1
} else {
answer2
}
그 간결함은 과도하게 사용하면 읽기 어려운 코드로 이어질 수 있습니다.
a != nil ? a! : b
for index in 1...5 {
print("\\(index) times 5 is \\(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
print("Person \\(i + 1) is called \\(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack
for name in names[2...] {
print(name)
}
// Brian
// Jack
for name in names[...2] {
print(name)
}
// Anna
// Alex
// Brian
for name in names[..<2] {
print(name)
}
// Anna
// Alex
Logical NOT (!a)
Logical AND (a && b)
Logical OR (a || b)
let allowedEntry = false
if !allowedEntry {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"