2015-10-22 154 views
1

我找不到這個問題的答案,例如我可以選擇一個可選的字符串嗎?我試着寫一個小的測試檢查出來:Swift可以嵌套嗎?

let a : String? = nil; 
let b : String?? = a; 
if b!=nil { // error 
    println("has value"); 
} 
else { 
    println("fail"); 
} 

但因爲我不是一個程序員斯威夫特我不知道如何處理錯誤,指出「不能分配給該表達式的結果」做。

+1

有人會問:你爲什麼想要它?我會注意到,在研究答案時。 – Tommy

+0

@Tommy,I ** WAITED **評論:-)我正在比較編程語言中的可空/可選方法,我可以交易一個小事實 - 在Kotlin中,它不是嵌套的:-) – greenoldman

+3

相關:[Swift中的兩個(或多個)optionals](http://stackoverflow.com/questions/27225232/two-or-more-optionals-in-swift)。 –

回答

2

是的,你可以;你的語法雖然不正確。這條線:

if b!=nil 

是由編譯器作爲消化:

if (b!) = nil 

...所以它認爲你想分配給nil展開的可選。 Swift不允許您在if語句內進行分配(與Objective-C相反)。取而代之的是更加清晰:

if b != nil 

編輯:和,完成思想,證明了語法糖確實正在可選可選的,如果添加:

if let b = b { 
    print("\(b)") 
} 

您應該看到nil作爲印刷輸出。

+0

挑剔的編譯器:-),所以optionals可以嵌套。非常感謝你! – greenoldman