什麼時候將一個變量推斷爲Swift編譯器的隱式解包可選項?或者變量必須始終用!爲什麼要這樣對待?什麼時候將一個變量推斷爲Swift編譯器的隱式解包可選項?
2
A
回答
1
類型推斷髮生在編譯時。將變量推斷爲隱式解包的可選項的唯一方法是爲其分配一個(直接或通過分配函數的返回值,該函數返回一個隱式解包的可選項)。
基本上,變量的「可選項」是的部分它的類型。以下變量的類型x
和y
是implicitly unwrapped Optional Int
(對於兩者),並且最重要的是,類型系統不認爲這是與「Int
」相同的「相同類型」。 (雖然你可以互換與Int
只要使用它,因爲它是不nil
)
let x: Int! = 7
fund make_y() -> Int! {
return 7
}
let y = make_y()
相關問題
- 1. 什麼時候Delphi編譯器創建一個隱式接口變量?
- 2. 爲什麼Swift編譯器不能推斷這個閉包的類型?
- 3. 什麼時候StringBuffer/StringBuilder沒有被編譯器隱式使用?
- 4. 爲什麼我應該解包隱式解包可選?
- 5. 什麼時候應該UITableViewCell帶隱式解包可選註冊通知?
- 6. 爲什麼在編譯的時候
- 7. Swift - 檢查零解包可選變量
- 8. iPhone:什麼時候將一個Objective C變量變成一個實例變量?
- 9. 什麼時候將const_iterator聲明爲一個常量迭代器?
- 10. 爲什麼隱式解包的選項需要在條件中再次解包?
- 11. 編譯器在將float變量轉換爲整型變量時會做什麼?
- 12. GWT編譯器:什麼時候編譯錯誤是致命的?
- 13. 爲什麼隱式解包可選未分配?
- 14. 你什麼時候可以聲稱你的程序是一個「編譯器」?
- 15. 什麼時候Docker變量可用?
- 16. 爲什麼編譯器將變量存儲在寄存器中?
- 17. 爲什麼編譯器不能推斷泛型類型
- 18. 爲什麼C++編譯器不能推斷模板參數?
- 19. 爲什麼編譯器不能推斷大數很長?
- 20. 隱式解包選項
- 21. 什麼時候編譯和構建,什麼時候不用.NET?
- 22. 什麼是編譯器隱式方法?
- 23. 編譯時爲什麼編譯器不知道局部變量的地址?
- 24. 爲什麼我嘗試的時候產生一個解碼器
- 25. 變量變量:什麼時候有用?
- 26. python:我什麼時候可以解開一個發生器?
- 27. 什麼時候變量是閉包的一部分?
- 28. 爲什麼Oracle Java編譯器不能在此推斷邊界,但Eclipse可以?
- 29. 什麼時候應該在Flash中使用CPU或GPU編譯器選項?
- 30. 將swfs反編譯爲AS3時,_loc_變量是什麼?
據我所知,只有'IBOutlets'被推斷爲隱式展開。其他所有內容都需要用'!'聲明。其被稱爲「隱式解包」的原因是因爲您可以先訪問它的屬性而不打開它。除此之外,它的行爲與Optionals – Jack
的行爲相同,謝謝傑克,在IBOutlet上有用。至於它的行爲與Optional相同,它不能包含零,但是,對吧? – Boon
是的它可以,它是一個「隱式解包可選」,這意味着它是一個可選 - 只是當您訪問屬性時,您不必首先打開它。多數民衆贊成在這.. – Jack