2017-04-20 62 views
-1

在以下代碼中,您是否曾使用分配給tempName的值?換句話說,tempNameOptional Binding之外是否還有其他用途。您是否曾經使用if let語句中指定的值

var name:String? 

name = "Nathan" 

if let tempName = name{ 
    print("It's not nil, it has a value") 
    print(tempName) // Nathan - Would you ever use this value 
    print(name!) // Nathan 
}else{ 
    print("It's nil, no value has been set") 
} 

感謝

+2

如果你只是想檢查值是否是'nil',那麼可選的結合是沒有意義的,因爲你不需要綁定* *做。你可以使用普通的'name!= nil'或'if let _ = name {'。對剛剛綁定的變量使用'!'看起來像一個錯誤,因爲可選綁定應該避免'!'。 – Sulthan

+2

*可選綁定*的全部要點是安全地創建一個展開的變量,然後您可以自由使用而不必擔心再次展開!正如@Sulthan所說,如果你只是檢查它是否爲'nil',那麼檢查'nil'或者將它分配給'_'。所以是的,絕對的,在* optional binding *之後有一個用於變量的用法。 – vacawama

+0

我想我的問題是不明白'可選綁定'是什麼,我認爲主要用於'如果讓'它是爲了檢查'nil'這肯定不是這樣,我的壞。謝謝@Sulthan和@ vacawama - 指出這一點,現在有道理。 –

回答

2

在這個例子中沒有,但如果你想要做的10個任務與name並將它傳遞給多種功能,在這些情況下是。如果你不使用它想象的情況你必須爲每一個這樣的任務和函數寫一個if檢查(因爲可選的方法導致其他方法返回的值也是可選的),這使得你的代碼在沒有任何理由的情況下可讀性和複雜性變得更低。

成像10

if name?.somefunction() != nil { 
     // do something if it is available 
}else{ 
     // it's not available. Do something appropriate 
} 
+0

'bound'的安全解開的,不可變的值。我的問題是不瞭解'Optional Binding'是什麼。現在完全有意義,非常感謝。 –