1.7 Swift可选值, 隐式解析可选 swift 中的? !
/** 可选值: optionals 加上个问号 两种状态一种是有值,另一种是没有值nil
可选值可以用 if语句来进行判断的 */
// 这个就是可选值,有值是整型9 let optionValue:Int? = 9 print(optionValue) // Optional(9)
if optionValue !=nil { print(optionValue) // Optional(9) }
print("------------->>") // 这里的!表示对可选值的一个强制解析 (unwrapping解包) let sValue:Int = optionValue! print(sValue) // 9
// 没有值 let optionValue1:Int? =nil
if optionValue1 ==nil { print(optionValue) print("------------->>") // 注意这个不是编译时的错误,是运行时的错误 // fatal error: unexpectedly found nil while unwrapping an Optional value // 空的对象,不可以对它进行强制解析,加上叹号强制解包 // var sValue1: Int = optionValue1! // print(sValue1)
// 可选绑定 ifvar sValue1 = optionValue1 { print(sValue1) }
/** 隐式解析可选类型,两种状态 有值,没有值nil */
let imOptValue:Int! = 111
print("------------->>") if imOptValue !=nil { print(imOptValue) }
print("iValue------------->>") // 可选绑定 iflet iValue = imOptValue { print(iValue) }
print("iValue2------------->>") // 这个地方我们定义了隐式可选类型后呢,不需要在强制解包(加叹号), let iValue2:Int = imOptValue print(iValue2)
/** 无论是普通的可选型,还是隐式的可选型, 对于一个没有值的进行解包都会引起一个运行时的错误 */
/** 1.常量和变量 Swift语言中是用let来定义常量,并且要初始化。var来定义变量, 在let或者var后面申明类型,冒号+空格,然后再加上类型名称。
2.optional(可选)变量 可选变量用于处理值缺失的情况,有点类似于OC中的nil,可以用于任何类型上,不仅仅是类,不过更加安全。Swift是类型安全的一门语言,可以很少申明类型。 附:Swift和Objective-C中nil的区别 1)OC中,nil是一个指向不存在对象的指针; 2)Swift中,nil不是指针,它是一个确定的值,用于表示值缺失。任何类型的可选状态都可以设置为nil,不只是对象类型; 3.深入了解Optional变量 Optional其实就是一个enum,里面有None和Some类型。nil就是Optional.None,非nil就是Optional.Some,通过Some(T)包装原始值,所以在是用Optional的时候要进行拆包。 声明一个可选类型的时候要在类型后面加上?如:var str : String? var strValue: String? 意思不是“我声明了一个Optional的String值”,而是我声明了一个Optional类型值。 对一个可选类型的值,需要进行拆包才不会报错。 拆包有两种方式,如下: 1)Optional Binding 如: if let str = strValue { let hashValue = str.hashValue } */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |