728x90
안녕하세요.
Swift 5.7에 새롭게 추가된 if let shorthand 라는 구문에 대해 간단하게 알아볼게요.
저희는 그동안 변수를 unwrapped 시키기 위해서 아래처럼 if let 구문을 사용했습니다.
let foo: String? = "String"
if let foo = foo {
// foo는 String 타입
}
제가 Swift를 처음 공부할 때 if-let 구문을 보고 변수를 중복 선언한 것 같아서 이상하게 느꼈던 기억이 있네요.
아래 코드도 한번 볼까요??
let someLengthyVariableName: String? = "longlonglonglong"
let anotherImportantVariable: String? = "anotherlonglonglong"
if let someLengthyVariableName = someLengthyVariableName, let anotherImportantVariable = anotherImportantVariable {
// ...
}
변수가 길어져서 더 보기 힘들어졌습니다...
그렇다고 아래처럼 변수명을 바꾸자니 그것도 그다지 마음에 들지는 않지 않나요..?? (저만 그런 것일 수도...)
let someLengthyVariableName: String? = "longlonglonglong"
let anotherImportantVariable: String? = "anotherlonglonglong"
if let some = someLengthyVariableName, let important = anotherImportantVariable {
// ...
}
이런 니즈를 애플에서 알아챘는지.. Swift 5.7에서부터 if let을 더 줄여서 & 가독성 좋게 사용할 수 있게 되었어요.
let foo: String? = "String"
if let foo { 😁
// foo는 String 타입
}
let someLengthyVariableName: String? = "longlonglonglong"
let anotherImportantVariable: String? = "anotherlonglonglong"
if let someLengthyVariableName, let anotherImportantVariable { 😁
// ...
}
오른쪽 표현식(right-hand expression)을 생략할 수 있게 되었습니다. 👍
이렇게 생략할 경우 컴파일러가 자동으로 해당 변수 이름으로 기존 변수를 할당해준다고 해요. (shadowing라고 하는데 우리말로 뭐라고 표현해야 할지 모르겠네요..;;)
Xcode regex search & replace 기능을 사용해서 기존에 사용하고 있던 모든 if-let 구문을 if-let shorthand 구문으로 바꿔줄 수도 있으니 참고해주세요!
- search : if let (\w+) = (\1) \{
- replace : if let $1 \{
## 참고
- https://github.com/apple/swift-evolution/blob/main/proposals/0345-if-let-shorthand.md
이번 글은 여기서 마무리.
반응형
'Swift' 카테고리의 다른 글
Optional에서의 map, flatMap (0) | 2022.09.04 |
---|---|
@inlinable, @usableFromInline (0) | 2022.08.15 |
inout (0) | 2022.06.05 |
Modeling errors (0) | 2022.05.27 |
클로저에서 [weak self] 사용할 때 주의할 점3 (0) | 2022.05.21 |