본문 바로가기
프로그래밍/iOS-Swift

[SWIFT] 기본 연산자

by 채연2 2021. 3. 30.

할당 연산자(Assignment Operator)

- 값 초기화 및 변경. 상수, 변수에 모두 사용 가능

- 튜플을 이용해 여러 값 한 번에 할당 가능

let b = 10
var a = 5
a = b
print(a) // 10

let(x,y) = (1,2)
print(x, y) //1 2

if x = y {
    //x = y는 값을 반환하지 않기 때문에 올바른 문법이 아님
}

if x == y {
    print("same")
} else {
    print("different")
}
// different

 

 

사칙 연산자 (Arithmetic Operators)

- 모든 숫자 형에서 사칙 연산자 지원

- 덧셈 연산자로 문자열 합치기 가능

"hello, " + "world"
// hello, world

 

 

나머지 연산자 (Remainder Operator)

- a % b와 같이 나머지 연산자 지원

9 % 4 //1
-9 % 4 //-1

 

 

 

단항 음수 연산자 (Unary Minus Operator)

- 숫자 값은 -로 표현되는 단항 음수 연산자에 의해 부호 변함

let three = 3  //3
let minuxThree = -three  //-3
let plusThree = -minusThree  //3

 

 

단항 양수 연산자 (Unary Plus Operator)

- +로 표현되는 단항 양수 연산자는 부호에 아무런 영향 끼치지 않음

let minusSix = -6
let alsoMinusSix = +minusSix   //-6

 

 

 

합성 할당 연산자 (Compound Assignment Operators)

- 할당 연산과 덧셈 연산으로 구성된 연산을 합성해 += 형태로 축약 사용 가능

var a = 1
a += 2   // 3

 

 

 

비교 연산자 (Comparison Operators)

- 표준 C에서 제공하는 비교 연산자 모두 지원

1 == 1   // true
2 != 1   // true
2 > 1    // true
1 < 2    // true
1 >= 1   // true
2 <= 1   // false
let name = "world"
if name == "world" {
    print("hello, world")
} else {
    print("I'm sorry \(name), but I don't recognize you")
}
// Prints "hello, world", because name is indeed equal to "world".

- 같은 타입의 값을 갖는 두 개의 튜플 비교 가능. 왼쪽 -> 오른쪽 방향으로 이루어지며, 한 번에 한 개의 값만 비교

(1, "zebra") < (2, "apple")   // true, 1이 2보다 작으니 true
(3, "apple") < (3, "bird")    // true 3과 3은 같고, apple은 bird보다 작으니 true
(4, "dog") == (4, "dog")      // true 4와 4는 같고, dog와 dog는 같으니 true

 

 

 

삼항 조건 연산자(Ternary Conditional Operator)

- question ? answer1 : answer2의 구조

- question 조건이 참인경우 answer1이 거짓인 경우 answer2가 실행

let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight는 90 (40 + 50)

 

 

 

Nil 병합 연산자(Nil-Coalescing Operator)

- a ?? b 형태를 갖는 연산자

- anil 인 경우 b를 반환

let defaultColorName = "red"
var userDefinedColorName: String?   // 이 값은 defaults 값 nil입니다.

var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorNam이 nil이므로 colorNameToUse 값은 defaultColorName인 "red"가 설정

 

 

 

범위 연산자(Range Operators) - 닫힌 범위 연산자(Closed Range Operator)

- (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

 

 

 

범위 연산자(Range Operators) - 반 닫힌 범위 연산자(Half-Open Range Operator)

- (a..<b)의 형태로 a부터 b보다 작을 때까지의 범위

- 배열이 배열의 크기 - 1의 인덱스를 갖기 때문에 이 반 닫힌 범위 연산자는 배열을 다루는데 유용

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

 

 

 

범위 연산자(Range Operators) - 단방향 범위(One-Side Ranges)

- [a..] [..a]의 형태로 범위의 시작 혹은 끝만 지정해 사용하는 범위 연산자

- 지정한 시작 값 혹은 끝 값은 범위에 포함

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

- 단방향 범위 연산자는 subscript뿐만 아니라 아래와 같이 특정 값을 포함하는지 여부를 확인할 때도 사용 가능

let range = ...5
range.contains(7)   // false
range.contains(4)   // true
range.contains(-1)  // true

 

 

 

논리 연산자(Logical Operators) - 논리 부정 연산자(Logical NOT Operator)

let allowedEntry = false
if !allowedEntry {
    print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"

 

 

 

논리 연산자(Logical Operators) - 논리 곱 연산자(Logical AND Operator)

let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"

 

 

 

논리 연산자(Logical Operators) - 논리 합(OR) 연산자(Logical OR Operator)

let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "Welcome!"

 

 

 

논리 연산자(Logical Operators) - 논리 연산자의 조합(Combining Logical Operators)

if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "Welcome!"

 

 

 

논리 연산자(Logical Operators) - 명시적 괄호(Explicit Parentheses)

if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "Welcome!"
320x100

'프로그래밍 > iOS-Swift' 카테고리의 다른 글

[SWIFT] View Controller 수명주기  (0) 2021.04.02
[SWIFT] 로컬 파일 로드하는 방법  (1) 2021.03.31
[SWIFT] WKWebView  (0) 2021.03.31
[SWIFT] Lamp On Off App  (0) 2021.03.31
[SWIFT] Xcode 프로젝트 생성  (0) 2021.03.30

댓글