16.1 Swift可选类型深入探讨

16.1 Swift可选类型深入探讨,第1张

概述        /**          16.1-可选类型深入探讨                    可选链  Optional Chaining          */                                    var opa: Int?                  /**          那么这个就是一个可选类型,本质上是这种写法          *

/**

16.1-可选类型深入探讨

可选链 Optional Chaining

*/

var opa: Int?

/**

那么这个就是一个可选类型,本质上是这种写法

*/

// var opa1 = Optional<Int>

/**

Optional 本身是匿名枚举

public enum Optional<Wrapped> : ExpressibleByNilliteral

case none

/// The presence of a value,stored as `Wrapped`.

case some(Wrapped)

*/

/**

设计者 相应的类型?

可选类型有两种状态: 有值 没有值nil

*/

/**

这个是基本类型,使用之前必须初始化。

那么可选类型的,使用之前可以不初始化。

这样子设计有什么好处,安全!!!

因为不管我们在什么时候访问某个普通变量都是有意义的。

普通变量的状态,只有一种:有值。

那么我们知道在 C语言和 Objective-C中普通变量有可能有值,有可能没有值,可以有多种状态。

但是在 Swift中普通变量只有一种状态有值。

*/

var a: Int = 1

print(opa ?? 3)

print(a)

/**

在传统的语言中,比如 C语言 Objective-C

在访问没有初始化的 变量的时候有可能会引起程序的崩溃。

所以Swift的设计者吸取了传统语言的教训,变量使用之前必须初始化,那么就不会出现

这样子的错误。但是考虑到基本类型的局限性,这个设计者有设计了可选类型。

设计者的这种设计理念,杜绝由于访问了没有初始化的变量而出现的各种问题。

*/

/**

可选类型是安全的吗?

我认为可选类型是安全的。因为我们在访问之前要解包,解包之前要判读它有值还是没有值。

*/

if let xa = opa {

print(xa)

}

/**

NSData *data = [NSData dataWithContentsOffile:@"/ect/passwd.txt"];

NSLog(@"%@",data);

*/

var data: NSData? = NSData.init(contentsOffile: "/ect/passwd.txt")

// print(data!)

if let dd = data {

print(data!)

}

总结

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

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存