Swift

[Swift 5.7] if let shorthand

Phililip
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

 

GitHub - apple/swift-evolution: This maintains proposals for changes and user-visible enhancements to the Swift Programming Lang

This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - GitHub - apple/swift-evolution: This maintains proposals for changes and user-visible enhance...

github.com

 

- https://dev.to/vibrazy/if-let-shorthand-project-wide-refactoring-using-xcode-regex-search-replace-enh

 

If let shorthand project wide refactoring using Xcode regex search & replace.

Swift 5.7 introduced this beauty (if let...

dev.to

 


 

이번 글은 여기서 마무리.

 

 

 

반응형

'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