日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

swift的可选值(optional)

發布時間:2025/6/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 swift的可选值(optional) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

蘋果那文檔寫了一大堆也沒有好好的寫一下可選值(optional)這個東西。就是在有一個“Optional Chaining”的章節,但是也不是很充分的說明。最后找了半天在“the basics”里墨跡了幾句。如果你沒找到optional這個東西的話,那你可能也錯過了一個很重要的東西,非optional類型的變量,這個變量的值不能是nil。這一點和ObjC以及其他的編程語言如C#、Java什么的差別很大。

1 2 var example : String?=?"hello world" example?=?nil?//ERROR,?Type?'String'?does?not?conform to protocol?'NilLiteralConvertible'

Optional的值就是可以為空也可以不為空的。定義的方式是這個樣子的:

1 var example : String??=?"hello world"

對,就是在類型后面的那個問號。有了這個問號,這個變量就是optional的了。它的值就可以為nil了。但是,你是不能直接訪問這個變量。

書接上文,非optional的變量不可以賦值為nil的特點。讓編程變的安全。因為,如果不檢查是否為空就直接使用的話是編譯不過的。如:

1 2 3 var example : String??=?"hello world" //example?=?nil var example2 : String?=?example????//ERROR, value of optional?type?'String?'?not?unwrapped

錯誤的提示說的是optional類型的變量沒有“拆包”。那么,如何拆包呢。很簡單,只要在后面加上一個感嘆號就可以了,如:

1 2 3 var example : String??=?"hello world" //example?=?nil var example2 : String?=?example!

“!”感嘆號unwrapp,拆包optional的變量。如果這個變量下有值的話就返回這個值,沒有的話就會產生一個運行時的錯誤。

所以呢,蘋果推薦了一種更安全的使用optional類型變量的方法。首先設定一個Employee類。它有一個成員屬性為name。

1 2 3 4 5 6 7 class?Employee { ????var name : String ????? ????init(name: String){ ????????self.name?=?name ????} }

然后,初始化一個Employee實例,并設定它是optional的:?var?e : Employee? = Employee(name:"Tom")。這個時候如果直接訪問name屬性就會報錯,e.name = "Tom Cat" // ERROR。如上所說需要拆包。e!.name = "Tom Cat"。那么安全的方式是什么樣呢:

1 2 3 4 5 6 7 8 var e : Employee??=?Employee("Tom") if?let en?=?e?.name { ????println("employee's name is \(en)") } else{ ????println("unable to identify the employee") }

直接用感嘆號的方法訪問可能會運行時錯誤,如:let en = e!.name。

延伸閱讀:“?”問號和“!”感嘆號。都是Optional<T>的簡寫。更多請了解swift的泛型和Optional<T>。

?

歡迎加群互相學習,共同進步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,轉載請注明出處!












本文轉自張昺華-sky博客園博客,原文鏈接:http://www.cnblogs.com/sunshine-anycall/p/4018142.html,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的swift的可选值(optional)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。