[英]Difference between optional values in swift?
有什么區別:
var title:String? = "Title" //1
var title:String! = "Title" //2
var title:String = "Title" //3
如果我在各方面設置標題並且我被迫以不同的方式展開每個變量,我該怎么說?
想想?
而且!
就像一個可能有價值的盒子。
我推薦這篇文章 。
可選的框可能有值或可能沒有 ,並且可選框不會被解包。
var title:String? = "Title" //second and third picture
您使用這樣的展開值:
if let title = title { //do sth with title, here is the same like let title: String = "Title" }
可選框, 可能有值或可能沒有 ,並且可選框實際上是打開的。 如果有值並且您訪問該值,那就沒問題( 第二張圖片 ,只需替換?
with !
),但如果沒有值,則應用程序崩潰( 第三張圖片 ,只需替換?
with !
)
var title:String! = "Title"
該變量具有肯定的值 ,並且您不能將此值賦值為nil
(因為它不是可選的)。 可選表示存在值或沒有值( nil
):
var title:String = "Title" //first picture
title
目前有一個Title
值,但將來它可能是nil
。 我需要使用可選綁定來解包它:
if let unwrappedTitle = title {
println(unwrappedTitle)
}
或者通過強制解開!
字符
let unwrappedTitle = title!
如果title
為nil
則上面會崩潰
title
目前的值為"Title"
。 它可能是零,但我知道我使用它時永遠不會。 您不需要使用可選綁定或通過強制解包來展開它!
字符。
如果在nil
訪問此值,程序將崩潰,但編譯器將允許您將此值設置為nil
。
title
目前的值為"Title"
。 這可能會改變,但變量title
將始終具有一些字符串值。 我不需要使用可選綁定或強制解包來檢查nil
。 如果您嘗試將title
設置為nil
,編譯器將不允許您構建。
var title:String? = "Title" //1 Nil Possible-Force Unwrap needed-Nil checking when use
var title1:String! = "Title"//2 Nil Possible-Force Unwrap not needed-Nil cheking when Use
var title2:String = "Title" //3 Nil Not possible as its initailize when declared-No force unwrap needed-No Nil Cheking is needed.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.