티스토리 뷰

Swift

[Swift 5.7] if let shorthand

Zedd0202 2022. 7. 9. 17:04
반응형

 

안녕하세요 :) Zedd입니다.

Swift 5.7 변경사항 중 하나인 if let shorthand를 보려고 합니다. 

 

if let foo = foo { .. } 를 사용하여 기존 optional variable를 "숨기는" optional binding은 굉장히 일반적인 패턴인데요.

if let foo = foo 같이 식별자를 두번 써줘야해서 

let someLengthyVariableName: Foo? = ...
let anotherImportantVariable: Bar? = ...

if let someLengthyVariableName = someLengthyVariableName, let anotherImportantVariable = anotherImportantVariable {
    ...
}

이렇게 긴 이름으로 할 때 코드가 장황해지는 경우가 있습니다. 

저는 저렇게 같은 이름으로 하는 것도 안좋아해서 ㅎ; 이름도 고민하게 되고 그러다보니 가독성도 떨어지는데요.

if let a = someLengthyVariableName, let b = anotherImportantVariable {
    ...
}

그렇다고 이렇게 성의없는 이름으로 할 수는 없겠죠. 

 

# if let shorthand for shadowing an existing optional variable

Swift 5.7에서는 Optional Binding에 단축 구문(shorthand syntax)을 도입합니다. 

let zedd: String? = "Zedd"

if let zedd { ✅
   // zedd가 nil이 아닐때 실행될 코드 
}

 아래와 같은 것들도 됩니다. 

if let foo { ... }
if var foo { ... }

else if let foo { ... }
else if var foo { ... }

guard let foo else { ... }
guard var foo else { ... }

while let foo { ... }
while var foo { ... }

guard도 된다는거!!

다만, 

struct Person {

    let name: String?
}

let zedd = Person(name: "Zedd")

if let zedd.name { // 🚫 Unwrap condition requires a valid identifier

}

이렇게 인스턴스 안에 있는 멤버 변수를 바로 넣는것은 안됩니다. 

 


 

 

벌써 7월이라니..우리 모두 화이팅~~

반응형

'Swift' 카테고리의 다른 글

[Swift 5.7] Type inference from default expressions  (0) 2022.08.05
[Swift 5.7] Multi-statement closure type inference  (1) 2022.07.09
Swift 5.6 ) Introduces existential any  (9) 2022.04.03
Swift ) Sequence  (1) 2022.02.05
Literal  (0) 2022.01.23