当前位置:首页 > 科技  > 软件

Swift 可选类型、可选绑定和可选链

来源: 责编: 时间:2024-01-16 10:17:14 355观看
导读本文我们将介绍 Swift 中的可选类型、可选绑定和可选链。如果你尚未安装 Xcode 和配置 Swift 开发环境。我们启动 Xcode,然后选择 "File" > "New" > "Playground"。创建一个新的 Playground 并命名为 "Optionals"。可

l0J28资讯网——每日最新资讯28at.com

本文我们将介绍 Swift 中的可选类型、可选绑定和可选链。如果你尚未安装 Xcode 和配置 Swift 开发环境l0J28资讯网——每日最新资讯28at.com

我们启动 Xcode,然后选择 "File" > "New" > "Playground"。创建一个新的 Playground 并命名为 "Optionals"。l0J28资讯网——每日最新资讯28at.com

可选类型

在 Swift 中,可选类型(Optional Types)用于处理可能包含值,也可能不包含值的情况。这对于处理变量可能为 nil 的情况非常有用。l0J28资讯网——每日最新资讯28at.com

在 Swift 中,可以使用 ? 符号来声明可选类型。而在 TypeScript 中,没有对应的可选类型语法。但可以通过 TypeScript 中的联合类型和 undefined 来模拟可选类型。l0J28资讯网——每日最新资讯28at.com

Swift Code

var userAge: Int? = 30var userName: String? = "Semlinker"

TypeScript Code

let userAge: number | undefined = 30;let userName: string | undefined = "Semlinker";

可选绑定

在 Swift 中,可选绑定是一种安全的方式来检查可选类型是否包含值,并将其提取出来。而在 TypeScript 中,可以使用条件语句来检查变量是否为 undefined。l0J28资讯网——每日最新资讯28at.com

可选绑定的语法形式是使用 if let 或 guard let 语句,其中 let 后面跟着一个新的常量或变量的名称,用于存储可选类型中的值。l0J28资讯网——每日最新资讯28at.com

Swift Code

var userAge: Int? = 30if let age = userAge {    print("User's age is /(age)")} else {    print("User's age is unknown")}// Output: User's age is 30

在以上例子中,if let 语句检查 userAge 是否包含值,如果包含,它将值赋给一个新的常量 age,之后就可以在 if 语句的作用域内使用这个常量。l0J28资讯网——每日最新资讯28at.com

另一种使用可选绑定的方式是使用 guard let 语句,通常在函数内部使用。guard let 语句要求条件为 true 时继续执行代码,否则执行 else 分支。l0J28资讯网——每日最新资讯28at.com

Swift Code

func printAge() {    var userAge: Int?    guard let age = userAge else {        print("User's age is unknown")        return    }    print("User's age is /(age)")}printAge()// Output: User's age is unknown

在以上示例中,如果 userAge 包含值,它将被赋给常量 age,否则将执行 else 分支。l0J28资讯网——每日最新资讯28at.com

TypeScript Code

let userAge: number | undefined = 30;if (userAge !== undefined) {    console.log(`User's age is ${userAge}`);} else {    console.log("User's age is unknown");}// Output: "User's age is 30"

隐式展开可空类型

在 Swift 中,如果确定可选类型一定包含值,可以使用 ! 符号进行强制解包。l0J28资讯网——每日最新资讯28at.com

Swift Code

var userAge: Int? = 30let unwrappedAge = userAge!print("The unwrapped age is /(unwrappedAge)")// Output: The unwrapped age is 30

需要注意的是,如果变量的值为 nil,强制展开将导致运行时出现异常。l0J28资讯网——每日最新资讯28at.com

l0J28资讯网——每日最新资讯28at.com

Nil 合并运算符

Swift 中的 nil 合并运算符 ?? 提供了一种简洁的方式,如果可选类型为 nil,则提供默认值。在 TypeScript 中,通常称为 Nullish Coalescing Operator,也是使用 ?? 符号。l0J28资讯网——每日最新资讯28at.com

这个运算符与 Swift 中的 nil 合并运算符类似,用于提供一个默认值,只有在变量为 null 或 undefined 时才使用默认值。l0J28资讯网——每日最新资讯28at.com

Swift Code

var userAge: Int?let ageToUse = userAge ?? 0print("Age to use is /(ageToUse)")// Output: Age to use is 0

TypeScript Code

let userAge: number | undefined;const ageToUse: number = userAge ?? 0;console.log(`Age to use is ${ageToUse}`);// Output: "Age to use is 0"

可选链

在 Swift 中,可选链允许你在调用属性、方法或下标脚本时处理可能为 nil 的可选类型,而无需进行繁琐的可选绑定。这种机制使得代码更加简洁和可读。比如,在 Swift 中,我们可以对数组使用可选链,以避免数组为 nil 的情况。l0J28资讯网——每日最新资讯28at.com

Swift Code

let names: [String]? = ["Alice", "Bob", "Semlinker"]let firstCharacter = names?.first?.firstprint(firstCharacter ?? "No names")// Output: A

在以上代码中,names?.first?.first 将首先检查 names 是否为 nil,然后检查数组的第一个元素是否为 nil,最后获取第一个元素的第一个字符。l0J28资讯网——每日最新资讯28at.com

Swift Code

let names: [String]? = []let firstCharacter = names?.first?.firstprint(firstCharacter ?? "No names")// Output: No names

TypeScript Code

const names: string[] | undefined = ["Alice", "Bob", "Semlinker"];const firstCharacter: string | undefined = names?.[0]?.[0];console.log(firstCharacter ?? "No names");// Output: "A"

本文我们介绍了 Swift 中的可选类型、可选绑定和可选链等相关的内容。通过与 TypeScript 语法的对比,希望能帮助您更好地理解 Swift 的相关特性。l0J28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-62363-0.htmlSwift 可选类型、可选绑定和可选链

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 三分钟带你搞懂 Future 玩法

下一篇: 15 个非 JavaScript 的高级 Web 开发技巧

标签:
  • 热门焦点
  • K60至尊版刚预热 一加Ace2 Pro正面硬刚

    Redmi这边刚如火如荼的宣传了K60 Ultra的各种技术和硬件配置,作为竞品的一加也坐不住了。一加中国区总裁李杰发布了两条微博,表示在自家的一加Ace2上早就已经采用了和PixelWo
  • 女孩租房开2小时空调用完100元电费引热议:5级能耗惹不起 月薪过万电费也交不起

    近日,江苏苏州一女孩租房当天充值了100元电费,开着空调不到2小时发现电费已用完。对于为什么这个快,房东表示,电表坏了这种情况很多,之前也遇到过,给租客换
  • 太卷!Redmi MAX 100英寸电视便宜了:12999元买Redmi史上最大屏

    8月5日消息,从小米商城了解到,Redmi MAX 100英寸巨屏电视日前迎来官方优惠,到手价12999元,比发布价便宜了7000元,在大屏电视市场开卷。据了解,Redmi MAX 100
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • Android 14发布:首批适配机型公布

    5月11日消息,谷歌在今天凌晨举行了I/O大会,本次发布会谷歌带来了自家的AI语言模型PaLM 2、谷歌Pixel Fold折叠屏、谷歌Pixel 7a手机,同时发布了Androi
  • 英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    据10 月 30 日外媒 TheVerge 消息报道,英特尔 Xe HPG Arc Alchemist 的正面实被曝光,不仅拥有 512 EU 版显卡,还拥有 128EU 的单风扇版本。另外,这款显卡 PCB
Top