1.7 Swift可选值, 隐式解析可选 swift 中的? !

1.7 Swift可选值, 隐式解析可选 swift 中的? !,第1张

概述/**          可选值: optionals          加上个问号          两种状态一种是有值,另一种是没有值nil                    可选值可以用 if语句来进行判断的          */                  // 这个就是可选值,有值是整型9         let optionValue:Int? = 9         pr

/**

可选值 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是类型安全的一门语言,可以很少申明类型。

附:SwiftObjective-Cnil的区别

1OC中,nil是一个指向不存在对象的指针;

2Swift中,nil不是指针,它是一个确定的值,用于表示值缺失。任何类型的可选状态都可以设置为nil,不只是对象类型;

3.深入了解Optional变量

Optional其实就是一个enum,里面有NoneSome类型。nil就是Optional.None,非nil就是Optional.some,通过Some(T)包装原始值,所以在是用Optional的时候要进行拆包。

声明一个可选类型的时候要在类型后面加上?如:var str : String?

var strValue String?

意思不是我声明了一个OptionalString”,而是我声明了一个Optional类型值。

对一个可选类型的值,需要进行拆包才不会报错。

拆包有两种方式,如下:

1Optional Binding

如:

if let str = strValue

{

let hashValue = str.hashValue

}

*/

总结

以上是内存溢出为你收集整理的1.7 Swift可选值, 隐式解析可选 swift 中的? !全部内容,希望文章能够帮你解决1.7 Swift可选值, 隐式解析可选 swift 中的? !所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存