매개변수의 기본값

함수를 선언할 때, 매개변수 부분에 기본값을 지정할 수 있다.

매개변수의 타입 뒷 부분에 등호를 사용하여 기본값을 입력한다.

함수 사용 시 인자가 입력되지 않는다면 정의된 기본값이 사용된다.

func gugu(dan:Int, count:Int = 9) {
    for i in 1...count {
        print("\(dan) x \(i) = \(dan*i)")
    }
}

gugu(dan:7)                 //1~9까지
gugu(dan: 7, count: 19)     //1~19까지

Array.removeAll() : 배열의 모든 요소를 삭제하며 배열에 할당된 메모리 공간을 반환함.
데이터를 삭제하며 이전에 할당된 메모리 공간을 다시 사용하고 싶다면:
Array.removeAll(keepingCapability: true)

기본값은 주로 많이 바뀌지 않을 것으로 예상하는 변수에 사용된다
(선택지가 있지만 대부분 바뀌지 않는 경우)

ex) 내비게이션의 경로 선택 시, 사람들은 주로 가장 빠른 길로 가길 원한다.
고속도로 우선 O/X와 같은 경우

에러 처리

Error 프로토콜을 사용하여 오류를 사용자가 정의할 수 있다. 오류 정의에는 열거형 enum을 사용하여 표현할 수 있다.

enum PasswordError : Error {
    case short, obvious
}

에러가 발생할 가능성이 있는 함수는 throws키워드를 사용한다.
throws가 있는 함수는 던지기 함수라고 하며, 오류를 전파한다.

오류를 발생시키기 위해서 throw 키워드를 사용한다.

func checkPassword(_ password: String) throws -> String {
    if password.count < 5 {
        throw PasswordError.short
    }
}

오류를 처리하기 위해 do-catch 구분을 사용하여 적절하게 오류를 처리한다.

let pswd = "12345"

do {
    let result = try checkPassword(pswd)
    print("패스워드 안전도 : \(result)")
} catch {
    print("에러 발생")
}

오류를 무시하기 위해 try!를 사용할 수 있다. try!do-catch가 필요하지 않지만 오류가 발생하는 경우 프로그램에 충돌이 발생할 수 있다.


Error.localizedDescription으로 오류의 자세한 정보를 확인할 수 있다.

카테고리:

업데이트: