//MARK:-----------可选类型?的用法------------/*-------------------------------------------------------------可选类型(变量名: 类型?)这个值要么存在,并且等于x,要么根本不存在。可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,指对象不存在,而Swift 的 nil 不是指针,它代表特定类型的值不存在。任何类型的可选类型都能赋值为 nil,而不仅限于对象类型。并且更安全。*/let num = "123"//由于toInt方法可能会失败,因此它会返回一个可选的Int类型,而不同于Int类型。一个可选的Int类型被记为Int?,不是Int。问号表明它的值是可选的,可能返回的是一个Int,或者返回的值不存在。let convertednumber:Int? = Int(num)// convertednumber is inferred to be of type "Int?",or "optional Int"var serverResponseCode: Int? = 404 //要么存在,且值为404serverResponseCode = nil //要么不存在。要将可选变量设为值不存在的状态,可以给它赋特殊值 nil/*nil 不能用于非可选量。如果代码中的常量或变量需要适配值不存在的特殊情况,务必将它声明为恰当的可选类型。如果定义的可选量时不提供默认值,该常量或变量将自动设为 nil*///var strValue = nil //错误var strValue : String?//判断一个Optional的值是否有值,可以用if来判断if (strValue != nil){ //do sth with strValue}/* 使用Optional值在使用Optional值的时候需要在具体的 *** 作,比如调用方法、属性、下标索引等前面需要加上一个?问号的意思是询问是否响应后面这个方法,和原来的isResponsetoSelector有些类似*/let hashValue = strValue?.hashValue //strValue是Optional的字符串,如果strValue是nil,则hashValue也为nil,如果strValue不为nil,hashValue就是strValue字符串的哈希值//let hashValue = strValue.hashValue //错误。对于Optional值,不能直接进行 *** 作print("hashValue is \(hashValue)")/*总结 ? 使用场景声明Optional值变量用在对Optional值 *** 作中,用来判断是否能响应后面的 *** 作[判断是否是nil的三元运算符]*/总结
以上是内存溢出为你收集整理的Swift教程之可选类型【问号的用法】全部内容,希望文章能够帮你解决Swift教程之可选类型【问号的用法】所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)