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

前端之家收集整理的这篇文章主要介绍了1.7 Swift可选值, 隐式解析可选 swift 中的? !前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_502_1@

@H_502_1@/**

@H_502_1@ 可选值@H_502_1@@H_502_1@ optionals

@H_502_1@ 加上个问号

@H_502_1@两种状态@H_502_1@一种是有值,另一种是没有值nil

@H_502_1@

@H_502_1@可选值可以用 if@H_502_1@语句来进行判断的

@H_502_1@ */

@H_502_1@

// @H_502_1@这个就是可选值,有值是整型9

@H_502_1@ let@H_502_1@ optionValue:Int@H_502_1@? = 9

@H_502_1@ print@H_502_1@(optionValue)

@H_502_1@// Optional(9)

@H_502_1@

@H_502_1@ if@H_502_1@ optionValue !=nil

@H_502_1@ {

@H_502_1@ print@H_502_1@(optionValue)

@H_502_1@// Optional(9)

@H_502_1@ }

@H_502_1@

print(@H_502_1@"------------->>")

@H_502_1@// 这里的@H_502_1@!表示对可选值的一个强制解析@H_502_1@ (unwrapping解包@H_502_1@)

@H_502_1@ let@H_502_1@ sValue:Int@H_502_1@ = optionValue!

@H_502_1@ print@H_502_1@(sValue)

@H_502_1@ // 9

@H_502_1@

@H_502_1@

@H_502_1@ // 没有值

@H_502_1@ let@H_502_1@ optionValue1:Int@H_502_1@? =nil

@H_502_1@

@H_502_1@ if@H_502_1@ optionValue1 ==nil

@H_502_1@ {

@H_502_1@ print@H_502_1@(optionValue)

print(@H_502_1@"------------->>")

// @H_502_1@注意这个不是编译时的错误,是运行时的错误

@H_502_1@// fatal error: unexpectedly found nil while unwrapping an Optional value

// @H_502_1@空的对象,不可以对它进行强制解析,加上叹号强制解包

@H_502_1@// var sValue1: Int = optionValue1!

@H_502_1@// print(sValue1)

@H_502_1@

@H_502_1@

@H_502_1@ // 可选绑定

@H_502_1@ if@H_502_1@var@H_502_1@ sValue1 = optionValue1

@H_502_1@ {

@H_502_1@ print@H_502_1@(sValue1)

@H_502_1@ }

@H_502_1@

@H_502_1@

@H_502_1@

@H_502_1@ /**

@H_502_1@隐式解析可选类型,两种状态

@H_502_1@ 有值,没有值@H_502_1@nil

@H_502_1@ */

@H_502_1@

@H_502_1@ let@H_502_1@ imOptValue:Int@H_502_1@! = 111

@H_502_1@

print(@H_502_1@"------------->>")

@H_502_1@ if@H_502_1@ imOptValue !=nil@H_502_1@ {

@H_502_1@ print@H_502_1@(imOptValue)

@H_502_1@ }

@H_502_1@

print(@H_502_1@"iValue------------->>")

@H_502_1@ // 可选绑定

@H_502_1@ if@H_502_1@let@H_502_1@ iValue = imOptValue {

@H_502_1@ print@H_502_1@(iValue)

@H_502_1@ }

@H_502_1@

@H_502_1@

print(@H_502_1@"iValue2------------->>")

// @H_502_1@这个地方我们定义了隐式可选类型后呢,不需要在强制解包(加叹号@H_502_1@),

@H_502_1@ let@H_502_1@ iValue2:Int@H_502_1@ = imOptValue

@H_502_1@ print@H_502_1@(iValue2)

@H_502_1@

@H_502_1@

@H_502_1@

@H_502_1@ /**

@H_502_1@无论是普通的可选型,还是隐式的可选型,

@H_502_1@对于一个没有值的@H_502_1@进行解包都会引起一个运行时的错误

@H_502_1@ */

@H_502_1@

@H_502_1@

@H_502_1@/**

@H_502_1@ 1.常量和变量

Swift@H_502_1@语言中是用let@H_502_1@来定义常量,并且要初始化。var@H_502_1@来定义变量,

@H_502_1@在let@H_502_1@或者var@H_502_1@后面申明类型,冒号+@H_502_1@空格,然后再加上类型名称

@H_502_1@

@H_502_1@

@H_502_1@ 2.optional(可选@H_502_1@)变量

@H_502_1@可选变量用于处理值缺失的情况,有点类似于OC@H_502_1@中的nil@H_502_1@,可以用于任何类型上,不仅仅是类,不过更加安全。Swift@H_502_1@是类型安全的一门语言,可以很少申明类型。

@H_502_1@ 附:@H_502_1@Swift@H_502_1@Objective-C@H_502_1@nil的区别

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

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

@H_502_1@ 3.深入了解@H_502_1@Optional变量

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

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

@H_502_1@ var strValue@H_502_1@ String?

@H_502_1@ 意思不是@H_502_1@“我声明了一个@H_502_1@Optional@H_502_1@String@H_502_1@”,而是我声明了一个@H_502_1@Optional类型值。

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

@H_502_1@拆包有两种方式,如下:

@H_502_1@ 1@H_502_1@Optional Binding

@H_502_1@ 如:@H_502_1@

@H_502_1@ if let str = strValue

@H_502_1@ {

@H_502_1@ let hashValue = str.hashValue

@H_502_1@ }

@H_502_1@ */

猜你在找的Swift相关文章