swift 4.1 可选型optional

swift 4.1 可选型optional,第1张

概述swift 4.1 可选型optional 标签(空格分隔): swift 可选型 optional ,表示一个值可能为空。但是这个空,在swift中就叫可选型,用关键字nil表示。它既不是0,也不是不存在,它就是nil 要么是它自身的值,要么为nil。nil就是可选型的默认值 简单记录下,就不展开的说了。 0. 申明一个可选项 用: 字符类型+? 必须显示的申明 var errorCode:In swift 4.1 可选型optional

标签(空格分隔): swift

可选型 optional ,表示一个值可能为空。但是这个空,在swift中就叫可选型,用关键字nil表示。它既不是0,也不是不存在,它就是nil

要么是它自身的值,要么为nil。nil就是可选型的默认值

简单记录下,就不展开的说了。

0. 申明一个可选项

用: 字符类型+? 必须显示的申明

var errorCode:Int? = 404var errorMessage:String? = "Not Found!"errorCode = nilprint( errorMessage )  // 输出:Optional("Not Found!")
1. 不能隐示的申明
//var errorCode1? = 404 //报错,必须声明类型var errorCode2:Int? = 404 //得像这样,显示的申明一个类型// Int? 和 Int 不是一种类型let imInt = 405 //Int 型errorCode = imIntprint(errorCode)  //Optional(405)//imInt = errorCode //报错了,把一个可选型赋值给一个Int型,报错。
2. 可选型的解包。

解包就是我得使用它了。确认强制解包用:!

var errorCode3:String? = "404"//"the errorcode is " + errorCode3 // 报错:2种不同的类型不能直接拼装使用。//如果需要使用,就得解包。用强制解包:!"the errorcode is " + errorCode3! // 打印:the errorcode is 404//用强制解包,是很危险的,如果这个值真的为 nil。然后强制解包,就会报错。var errorCode4:String? = nil//"the errorcode is " + errorCode4! // 报错了:nil被强制解包报错。
3. 可以用if 判断可选型是否为nil,安全后再用!解包
var errorCode5:String? = "502"if errorCode5 != nil {    print(errorCode5!) //打印:502} else {    print("No error!")}
4. if 联合使用 let 关键字解包,可以不用!了
if let unwrappedErrorCode = errorCode5{    print(unwrappedErrorCode) //打印:502} else {    print("No error!")}//也可以用相同的名字:if let errorCode5 = errorCode5{    print(errorCode5) //打印:502} else{    print("No error!")}
5. 使用 if let 解包多个可选型的值。相当于 and *** 作
if let errorCode5 = errorCode5,errorMessage = errorMessage{    print("code is \(errorCode5),msg is \(errorMessage)")    //打印:code is 502,msg is Not Found!}
6. 使用 if let 再加 where 进一步限定
if let errorCode5 = errorCode5,errorMessage = errorMessage where errorCode5 == "502"{    print("code is \(errorCode5),msg is \(errorMessage)")}print(errorCode5) // 它自身的值并没有被改变:Optional("502")
7. Optional chaining 链式 *** 作
//解包var errorMessage2: String? = "Not Found"if let errorMessage2 = errorMessage2{    print(errorMessage2.uppercaseString) // "NOT FOUND" 全部大写了}//chaining *** 作就是可以直接用:if let errorMessage2 = errorMessage2?.uppercaseString{    print(errorMessage2) // "NOT FOUND" 全部大写了}//也可以直接用 !强制解包,前提是你确定一定不为nil。let upperMessage2 = errorMessage2!.uppercaseString //"NOT FOUND" 全部大写了
8. 使用 ?? 解包。更加单的三目运算符
let message2 = errorMessage == nil ? "No error" : errorMessage!//等价。如果 errorMessage 解包成功,就把解包解包的值给 message3let message3 = errorMessage ?? "No error" // "Not Found!"
9 .在元祖里面使用可选型
//errorMessage 设置为可选var error1:(errorCode:Int,errorMsg:String?) = (404,"Not found!")error1.errorMsg = nil //成功print(error1) //打印:(404,nil)//把整个元祖设置为可选var error2:(errorCode:Int,errorMsg:String)? = (404,"Not Found!")error2 = nil //成功的print(error2) // 打印:nil
10 .隐士的申明

待续

总结

以上是内存溢出为你收集整理的swift 4.1 可选型optional全部内容,希望文章能够帮你解决swift 4.1 可选型optional所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1072835.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存