[iOS][Swift] Swift 핵심 요소: 고차함수, 조건문, 옵셔널

Jay·2023년 7월 18일
0

iOS

목록 보기
2/47

1. 고차함수 (Higher-order functions)

고차 함수는 다른 함수를 매개 변수로 받거나, 결과로 함수를 반환하는 함수를 말합니다. Swift에서는 map, reduce, filter 등의 함수가 있습니다.

예시:

let numbers = [1, 2, 3, 4, 5]

let squared = numbers.map { $0 * $0 } // 결과: [1, 4, 9, 16, 25]
let sum = numbers.reduce(0, +) // 결과: 15
let evenNumbers = numbers.filter { $0 % 2 == 0 } // 결과: [2, 4]

2. 조건문 (Conditional Statements)

Swift에서는 if, else if, else를 통해 조건을 테스트하고 특정 코드 블록을 실행할 수 있습니다. 또한 switch 문을 사용하여 여러 조건을 테스트할 수 있습니다.

예시:

let number = 10

if number > 5 {
    print("Number is greater than 5")
} else {
    print("Number is not greater than 5")
}

switch number {
case 1:
    print("Number is 1")
case 2:
    print("Number is 2")
default:
    print("Number is another number")
}

3. 옵셔널 (Optional)

Swift에서 옵셔널은 값이 있을 수도 있고 없을 수도 있는 상황을 다룰 때 사용됩니다. 옵셔널은 값을 포함하거나 'nil'로 없음을 나타냅니다.

예시:

var optionalNumber: Int? = 5
optionalNumber = nil // This is allowed

4. 옵셔널 언래핑 (Optional Unwrapping)

옵셔널에 값이 포함되어 있다면 그 값을 추출하는 과정을 옵셔널 언래핑이라고 합니다. Swift에서는 'if let' 또는 'guard let' 구문을 사용하여 안전하게 옵셔널을 언래핑할 수 있습니다.

예시:

var optionalNumber: Int? = 5

if let number = optionalNumber {
    print("I have a value, it's \(number)")
} else {
    print("I don't have a value, I'm nil")
}

5. 옵셔널 체이닝 (Optional Chaining)

옵셔널 체이닝은 옵셔널이 nil인지 아닌지 확인하면서 여러 개의 옵셔널을 연결하는 과정입니다. 옵셔널 체이닝이 실패하면 표현식 전체는 nil이 됩니다.

예시:

class Person {
    var job: Job?
}

class Job {
    var salary: Salary?
}

class Salary {
    var amount: Int = 0
}

let person = Person()

let salaryAmount = person.job?.salary?.amount
// If person doesn't have a job or if job doesn't have a salary, 
this will return nil

6. 옵셔널 바인딩 (Optional Binding)

옵셔널 바인딩은 옵셔널의 값을 임시 상수 또는 변수에 할당하는 과정입니다. 이를 통해 nil 검사와 값 추출이 동시에 이루어집니다. 'if let' 또는 'guard let'을 통해 옵셔널 바인딩을 수행할 수 있습니다.

예시:

var optionalString: String? = "Hello, Swift!"

// Optional Binding with if let
if let string = optionalString {
    print("String is '\(string)'")
} else {
    print("The optional is nil")
}

// Optional Binding with guard let
guard let string = optionalString else {
    print("The optional is nil")
    return
}
print("String is '\(string)'")

'if let'은 옵셔널 값이 nil인지 아닌지를 확인하고 nil이 아닌 경우 값을 사용할 수 있습니다.

'guard let'은 'if let'과 반대로 옵셔널 값이 nil인 경우를 처리하며, nil이 아닌 경우 이후의 코드를 계속 실행합니다.

profile
Junior Developer

3개의 댓글

comment-user-thumbnail
2023년 7월 18일

정말 좋은 정보 감사합니다!

답글 달기
comment-user-thumbnail
2023년 7월 18일

아주 유용한 정보네요!

답글 달기
comment-user-thumbnail
2023년 7월 18일

많은 도움이 되었습니다, 감사합니다.

답글 달기