제니스 사무소에서 Optional 출연.
4717 단어 Swift
네트워크를 사용하지 않으면 아래에서 역할을 올바르게 할당할 수 있습니다.
let hoge: Any? = nil
hoge as! String? // nil
그러나 일반 함수에서 같은 동작을 수행하면 force unwrap 오류가 발생합니다.func convert<T>(_ value: Any?) -> T {
return value as! T
}
convert(nil) as String? // fatal error: unexpectedly found nil while unwrapping an Optional value
이것은 또 다른 열네크스 함수를 통해 피할 수 있다.func convert<T>(_ value: Any?) -> T {
func cast<U, V>(_ value: U, to type: V.Type) -> V {
return value as! V
}
return cast(value, to: T.self)
}
convert(nil) as String? // nil
※ 달성하고자 하는 것은 옵티올, 비 옵티올이 모두 허용할 수 있는 캐릭터 정의입니다.
struct Hoge {
let val1: String
let val2: String?
}
Hoge(val1: convert(dict["val1"]),
val2: convert(dict["val2"]))
// 逐一 `as` を書きたくない
Hoge(val1: dict["val1"] as! String,
val2: dict["val2"] as? String)
Reference
이 문제에 관하여(제니스 사무소에서 Optional 출연.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sora0077@github/items/611f555f163af93f4c5e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)