스위프트에서는 함수 내부에 함수를 또 정의할 수 있다. 중첩된 함수는 내부에서만 실행되고, 함수 밖에서는 사용이 불가능하다.
func chooseDirection(going: Bool, value: Int) -> Int {
func goStraight(input: Int) -> Int {
return input + 1
}
func goBack(input: Int) -> Int {
return input - 1
}
if going == true {
return goStraight(input: value)
} else {
return goBack(input: value)
}
}
var value : 9
chooseDirection(going: true, input: value)
guard문은 if문과 유사하게 쓰이는데 if문에서는 조건이 만족하는 것을 먼저 찾고 마지막에 불만족하는 조건을 걸러낸다. 이렇게 쓰게 되면 조건이 여러개가 될 때 가독성이 떨어진다.
func check(words: String) -> Bool
if words.count >= 5 {
print("\(words.count)글자입니다.")
} else {
print("5글자 이하입니다.")
}
이렇게 쓰게 되면 만족하는 조건을 찾을 때까지 계속 확인하고 마지막에 불만족 하는 조건을 찾게 되어서 빠르게 빠져 나올 수 없다.
gaurd문을 사용하게 되면 조건을 불만족하면 바로 빠져나올 수 있다.
func check(words: String) -> Bool {
guard words.count >= 5 else {
print("5글자 이하입니다.")
return false
}
print("\(words.count)글자입니다.")
return true
}