새로 나오는 언어들 대부분은 무수히 많이 일어나는 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을 사용하고 있습니다