Swift의if문에where를 사용할 때의else 조건
Where 사용 시 else 조건
Swift1.2부터if문은where를 사용할 수 있습니다.
이렇게 하면 Optional 변수를 끼워 넣지 않고 마운트 해제한 후 내용을 판정할 수 있다.
그러나 이 경우
else
문이 언로드 후 내용이 없는 경우인지, 아니면 where의 판정이 거짓인지 의문이 들어 조사했다.func test(token: String?) {
if let t = token where t.isEmpty {
println("token is empty")
} else {
println("token is nil or not empty")
}
}
// 結果
test("") // -> token is empty
test("xxx") // -> token is nil or not empty
test(nil) // -> token is nil or not empty
그 결과 마운트 해제 후 내용이 없는 경우와where의 판정이 가짜로 변한 경우는 모두else에 들어갔다.(당연하지)다 헤어져야 돼
모두 떼어놓으려면 다음과 같은 내용을 써도 되지만 더 이해하기 어렵다.
func test(token: String?) {
if let t = token where t.isEmpty {
println("token is empty")
} else if token == nil {
println("token is nil")
} else {
println("token is not empty")
}
}
솔직하게 끼워 넣는 게 좋아요.func test(token: String?) {
if let t = token {
if t.isEmpty {
println("token is empty")
} else {
println("token is not empty")
}
} else {
println("token is nil")
}
}
switch 문으로 쓰기 (추기)
@Ushio@github선생님이 저에게 주신 평어입니다.
Switch 문으로 예쁘게 나눠서 볼 수 있어요. 이게 제일 보기 쉬워요.
func test(token: String?) {
switch token {
case let .Some(value) where value.isEmpty:
println("token is Empty")
case let .Some(value):
println("token is Not Empty")
case .None:
println("token is nil")
}
}
test("")
test("token")
test(nil)
/*
token is Empty
token is Not Empty
token is nil
*/
Reference
이 문제에 관하여(Swift의if문에where를 사용할 때의else 조건), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/_mpon/items/40cfb21d880fa5e6989b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)