고차 함수는 다른 함수를 매개 변수로 받거나, 결과로 함수를 반환하는 함수를 말합니다. 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]
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")
}
Swift에서 옵셔널은 값이 있을 수도 있고 없을 수도 있는 상황을 다룰 때 사용됩니다. 옵셔널은 값을 포함하거나 'nil'로 없음을 나타냅니다.
var optionalNumber: Int? = 5
optionalNumber = nil // This is allowed
옵셔널에 값이 포함되어 있다면 그 값을 추출하는 과정을 옵셔널 언래핑이라고 합니다. 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")
}
옵셔널 체이닝은 옵셔널이 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
옵셔널 바인딩은 옵셔널의 값을 임시 상수 또는 변수에 할당하는 과정입니다. 이를 통해 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이 아닌 경우 이후의 코드를 계속 실행합니다.
정말 좋은 정보 감사합니다!