글 작성자: HEROHJK

새로 나오는 언어들 대부분은 무수히 많이 일어나는 NULL Execption 오류를 피하기 위하여, Optional 에 관한 기법을 지원을 합니다.


Swift도 예외는 아닙니다.


가장 대표적으로 if let과 guard let이 있습니다.


myClassArray라는 MyClass 배열의 값 하나를 꺼내온다고 쳤을때, 


두 문법을 한번 살펴보겠습니다.


func getMyClass(myClassArray: [MyClass], index: Int) -> MyClass{
    if let myClass = myClassArray[index]{
        //블록 안에서만 myClass를 사용 가능 하다
        return myClass
    } else {
        //nil 오류가 날 시, 빈 myClass를 리턴한다
        return myClass()
    }
}


func getMyClass(myClassArray: [MyClass], index: Int) -> MyClass{
    //guard let은 생성에 실패했을 경우의 예외처리를 해 준다
    guard let myClass = myClassArray[index] else{
        //nil 오류로 생성에 실패했을 시, 빈 myClass를 리턴한다
        return myClass()
    }
   
    return myClass
}


대략 이정도의 차이가 있습니다.


if let은 블록안에서 사용이 가능하고,


guard let은 일반 변수처럼 사용이 가능하지만, 오류가 났을 시에는 저렇게 예외처리를 해주는 구문이 있습니다.


저는 개인적으로 간단한 처리를 할 때에는 if let을, 하나 뿐 아니라 여러가지의 변수 연산이 필요할 때에는 guard let을 사용하고 있습니다

반응형