güvenli değildir çift bu çifte String
sarılmış gibi opsiyonel:
let a: String?? = "hello"
print(a as Any) // "Optional(Optional("hello"))\n"
@Leo, ilgilenir misin gösterdi isteğe bağlı 2 numaralı bağlantı noktasını iki kez kullanın:
veya kuvvet iki kez paketini:
Ayrıca kullanabilirsiniz:
Yöntem 1: Burada
print(value!!) // don't do this - you're just asking for a crash
güvenle bir opsiyonel çift unwrap kullanabilirsiniz 4 daha yöntemlerdir desen eşleştirme:
if case let value?? = a {
print(value) // "hello\n"
}
Alternatif olarak
, iki kez operatör??
birleştirici nil kullanabilir: Yöntem
print((a ?? "") ?? "") // "hello\n"
Yöntem 3:
Yoksa isteğe bağlı bağlama ile ??
kullanabilirsiniz:
if let value = a ?? nil {
print(value) // "hello\n"
}
Yöntem 4: Ayrıca
, isteğe bağlı bağlama ile flatMap
kullanabilirsiniz:
if let value = a.flatMap({ $0 }) {
print(value) // "hello\n"
}
The ?? nil 'parlak! – fpg1503
Bu en iyi yanıt, özellikle Yöntem 3'tür. – nobre
Kalıp eşleme sözdiziminin bir kısmı alışık olmasına rağmen yöntem 1'i beğenirim. Yöntem 3 neden ve nasıl çalışır? – Raginmari