100 days of swiftui: 8
https://www.hackingwithswift.com/100/swiftui/8
함수의 매개변수를 인수로 입력받게 할 수도 있고, 인수를 입력받지 못할 때를 대비해 기본값을 설정하는 방법도 있다.
func sayHello(name: String = "Unkown") {
print("Hello, \(name)!")
}
sayHello()
sayHello(name: "Juan")
결과:
Hello, Unkown!
Hello, Juan!
코드 파일
https://github.com/soaringwave/Ios-studying/commit/04bc921f689f45ba8febbcd8bea23b67628f07a6
다양한 경우에 에러가 발생할 수도 있다. 에러를 어떻게 다룰지 설정하지 않으면 에러로 인해 프로그램이 중단될 수도 있다. 이를 방지하고자 do, try, catch로 특정 에러를 다루는 방법을 미리 설정할 수도 있다.
예로 비밀번호가 입력되었을 때 비밀번호가 너무 짧거나 12345로 설정되면 에러를 보여주는 코드는 아래처럼 설정할 수 있다.
enum PasswordError: Error {
case short, obvious
}
먼저 에러의 종료를 간단하게 두 가지로 설정한다.
❗️그리고 enum의 이름 옆에 Error
를 작성해서 Error type으로 설정해야 한다.
func checkPassword(_ password: String) throws -> String {
if password.count < 5 {
throw PasswordError.short
}
if password == "12345" {
throw PasswordError.obvious
}
if password.count < 8 {
return "OK"
} else if password.count < 10 {
return "Good"
} else {
return "Excellent"
}
}
그리고 비밀번호를 전달받으면 비밀번호가 5자리보다 작을 때는 PasswordError.short
에러를 발생시키고, 12345
일 때는 PasswordError.obvious
에러를 발생시키고, 이외에는 글자 수에 따라 상태 문구를 반환하는 함수를 설정한다.
❗️그리고 함수의 매개변수 옆에 throws
키워드를 작성해야 한다.
let string = "12345"
do {
let result = try checkPassword(string)
print("Password rating: \(result)")
} catch PasswordError.short {
print("Please use a longer password.")
} catch PasswordError.obvious {
print("Please use a more complex password.")
} catch {
print("There was an error.")
}
에러를 일으킬 수 있는 문장들을 do
에서 작성하고, throw
를 포함하는 함수를 try
로 실행시킨다. 그리고 내가 설정한 에러에 맞게 다루고자 각 에러별로 catch
를 설정한다.
❗️throwing 함수는 무조건 try로 실행해야 한다.
코드 파일
https://github.com/soaringwave/Ios-studying/commit/0a7d676975c6aef13b923e282e076f91ca0dca41