Swift基础知识:24.Swift可选链

在 Swift 中,可选链(Optional Chaining)是一种用于调用可选类型属性、方法或下标的安全方式。可选链允许我们在调用链中的任何一个属性、方法或下标返回 nil 时,整个调用链仍然可以继续执行,而不会因为其中的任何一个可选类型为 nil 而导致整个调用链失败。

可选链的语法

可选链使用问号(?)来连接可选类型的属性、方法或下标。如果可选类型存在值,则调用会成功,如果可选类型为 nil,则整个调用链会返回 nil

示例:

class Person {var residence: Residence?
}class Residence {var address: Address?func printAddress() {if let address = address {print(address)} else {print("No address available")}}
}class Address {var street: String = "123 Swift Street"
}let person = Person()
if let address = person.residence?.address?.street {print("The person's street is \(address)")
} else {print("No street available")
}

可选链调用方法

我们可以使用可选链来调用可选类型的方法。如果可选类型为 nil,方法调用会返回 nil,否则会调用该方法。

示例:

let residence = Residence()
let address = residence.address?.printAddress()

可选链调用下标

可选链还可以用于调用可选类型的下标。如果可选类型为 nil,下标调用会返回 nil,否则会调用该下标。

示例:

let street = person.residence?[0]?.street

使用可选链调用方法和下标赋值

我们还可以使用可选链来调用可选类型的方法和下标进行赋值操作。如果可选类型为 nil,赋值操作会被忽略。

示例:

person.residence?.address?.street = "456 Swift Street"

可选链是 Swift 中用于安全地调用可选类型属性、方法和下标的重要机制。通过使用可选链,我们可以避免因为可选类型为 nil 而导致的运行时错误,使代码更加安全和健壮。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/485712.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用k-近邻算法改进约会网站的配对效果(kNN)

目录 谷歌笔记本(可选) 准备数据:从文本文件中解析数据 编写算法:编写kNN算法 分析数据:使用Matplotlib创建散点图 准备数据:归一化数值 测试算法:作为完整程序验证分类器 使用算法&…

vulvhub-----Hacker-KID靶机

打靶详细教程 1.网段探测2.端口服务扫描3.目录扫描4.收集信息burp suite抓包 5.dig命令6.XXE漏洞读取.bashrc文件 7.SSTI漏洞8.提权1.查看python是否具备这个能力2.使用python执行exp.py脚本,如果提权成功,靶机则会开放5600端口 1.网段探测 ┌──(root…

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁

PublishFolderCleaner – Github 测试环境: .Net 8 Program.cs 代码 // https://github.com/dotnet-campus/dotnetcampus.DotNETBuildSDK/tree/master/PublishFolderCleanerusing System.Diagnostics; using System.Text;// 名称, 不用写 .exe var exeName "AbpDemo&…

基于Spring Boot+Mybatis+Shiro+EasyUI的宠物医院管理系统

项目介绍 本系统前台面向的用户是客户,客户可以进行预约、浏览医院发布的文章、进入医院商城为宠物购物、如有疑问可以向官方留言、还可以查看关于自己的所有记录信息,如:看病记录、预约记录、疫苗注射记录等。后台面向的用户是医院人员&…

一些可以参考的文档集合16

之前的文章集合: 一些可以参考文章集合1_xuejianxinokok的博客-CSDN博客 一些可以参考文章集合2_xuejianxinokok的博客-CSDN博客 一些可以参考的文档集合3_xuejianxinokok的博客-CSDN博客 一些可以参考的文档集合4_xuejianxinokok的博客-CSDN博客 一些可以参考的文档集合5…

个人网站如何调用微信公司的登录接口,实现微信登录

个人网站如何调用微信公司的登录接口,实现微信登录!如果你个人网站想使用微信公司的登录接口,目前是需要收费的,微信公司登录接口不再是免费的了。需要缴纳认证费,每年认证费是300元/年。才能调用微信的登录接口。 如图&#xff0…

FairyGUI × Cocos Creator 3.x 使用方式

前言 上一篇文章 FariyGUI Cocos Creator 入门 简单介绍了FairyGUI,并且按照官方demo成功在Cocos Creator2.4.0上运行起来了。 当我今天使用Creator 3.x 再引入2.x的Lib时,发现出现了报错。 这篇文章将介绍如何在Creator 3.x上使用fgui。 引入 首先&…

安泰高压放大器用途有哪些呢

高压放大器是一种功能强大的放大器,其广泛的用途使其在众多领域中发挥着重要作用。下面安泰电子将详细介绍高压放大器的用途和应用场景。 实验室仪器:在科研实验室中,高压放大器通常用于各种实验设备中,如光谱仪、质谱仪、电化学分…

【Appium UI自动化】pytest运行常见错误解决办法

通过Appium工具录制代码在pycharm上运行报错: 错误一: 1.提示 setup() 方法运行 error failed 解决办法:未创建 init __ 方法,创建一个空的__init.py文件就解决了。 原因: 错误二: 2.运行代码&#xff…

如何进行非线性负载测试?

非线性负载测试是模拟真实用户行为和系统性能的测试方法,它可以帮助我们发现系统在高并发、高负载情况下的性能瓶颈和潜在问题。以下是进行非线性负载测试的一些建议: 在进行非线性负载测试之前,首先要明确测试的目标,例如测试系统…

ESP8266智能家居(3)——单片机数据发送到mqtt服务器

1.主要思想 前期已学习如何用ESP8266连接WIFI,并发送数据到服务器。现在只需要在单片机与nodeMCU之间建立起串口通信,这样单片机就可以将传感器测到的数据:光照,温度,湿度等等传递给8266了,然后8266再对数据…

NATS学习笔记(一)

NATS是什么? NATS是一个开源的、轻量级、高性能的消息传递系统,它基于发布/订阅模式,由Apcera公司开发和维护。 NATS的功能 发布/订阅:NATS的核心是一个发布/订阅消息传递系统,允许消息生产者发布消息到特定的主题…

ONLYOFFICE 桌面应用程序 v8.0 发布:全新 RTL 界面、本地主题、Moodle 集成等你期待的功能来了!

目录 📘 前言 📟 一、什么是 ONLYOFFICE 桌面编辑器? 📟 二、ONLYOFFICE 8.0版本新增了那些特别的实用模块? 2.1. 可填写的 PDF 表单 2.2. 双向文本 2.3. 电子表格中的新增功能 单变量求解:…

核密度分析

一.算法介绍 核密度估计(Kernel Density Estimation)是一种用于估计数据分布的非参数统计方法。它可以用于多种目的和应用,包括: 数据可视化:核密度估计可以用来绘制平滑的密度曲线或热力图,从而直观地表…

nginx服务基础用法(概念、安装、热升级)

目录 一、I/O模型概述 1、I/O概念 1.1 计算机的I/O 1.2 Linux的I/O 2、零拷贝技术 3、同步/异步(消息反馈机制) 4、阻塞/非阻塞 5、网络I/O模型 5.1 阻塞型 I/O 模型(blocking IO) 5.2 非阻塞型 I/O 模型 (nonblocking …

基于Android的记单词App系统的研究与实现,附附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

超级实用的python代码片段汇总和详细解析(16个)

目录 1. 生成随机文本 2. 计算文本文件中的字数 3. 替换文件文件中的字串 4. 多文件名的批量替换 5. 从网站提取数据 6. 批量下载图片 7.批量删除空文件夹 8.Excel表格读写 9.合并Excel表格工作簿 10.数据库SQL查询 11. 系统进程查杀 12.图像尺寸调整和裁剪 13.图…

数据湖Iceberg、Hudi和Paimon比较

1.社区发展现状 项目Apache IcebergApache HudiApache Paimon开源时间2018/11/62019/1/172023/3/12LicenseApache-2.0Apache-2.0Apache-2.0Github Watch1481.2k70Github Star5.3k4.9k 1.7k Github Fork1.9k2.3k702Github issue(Open)898481263Github issue(closed)20542410488…

2.22 Qt day3 多界面跳转+qss登录界面优化+发布软件+对话框

思维导图: 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号…

C# Onnx 使用onnxruntime部署实时视频帧插值

目录 介绍 效果 模型信息 项目 代码 下载 C# Onnx 使用onnxruntime部署实时视频帧插值 介绍 github地址:https://github.com/google-research/frame-interpolation FILM: Frame Interpolation for Large Motion, In ECCV 2022. The official Tensorflow 2…