服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Swift - Swift 可选类型、可选绑定和可选链

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

2024-01-16 13:34全栈修仙之路 Swift

本文我们介绍了 Swift 中的可选类型、可选绑定和可选链等相关的内容。通过与 TypeScript 语法的对比,希望能帮助您更好地理解 Swift 的相关特性。

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

本文我们将介绍 Swift 中的可选类型、可选绑定和可选链。如果你尚未安装 Xcode 和配置 Swift 开发环境。

我们启动 Xcode,然后选择 "File" > "New" > "Playground"。创建一个新的 Playground 并命名为 "Optionals"。

可选类型

在 Swift 中,可选类型(Optional Types)用于处理可能包含值,也可能不包含值的情况。这对于处理变量可能为 nil 的情况非常有用。

在 Swift 中,可以使用 ? 符号来声明可选类型。而在 TypeScript 中,没有对应的可选类型语法。但可以通过 TypeScript 中的联合类型和 undefined 来模拟可选类型。

Swift Code

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

TypeScript Code

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

可选绑定

在 Swift 中,可选绑定是一种安全的方式来检查可选类型是否包含值,并将其提取出来。而在 TypeScript 中,可以使用条件语句来检查变量是否为 undefined。

可选绑定的语法形式是使用 if let 或 guard let 语句,其中 let 后面跟着一个新的常量或变量的名称,用于存储可选类型中的值。

Swift Code

var userAge: Int? = 30

if 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 语句的作用域内使用这个常量。

另一种使用可选绑定的方式是使用 guard let 语句,通常在函数内部使用。guard let 语句要求条件为 true 时继续执行代码,否则执行 else 分支。

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 分支。

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 中,如果确定可选类型一定包含值,可以使用 ! 符号进行强制解包。

Swift Code

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

// Output: The unwrapped age is 30

需要注意的是,如果变量的值为 nil,强制展开将导致运行时出现异常。

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

Nil 合并运算符

Swift 中的 nil 合并运算符 ?? 提供了一种简洁的方式,如果可选类型为 nil,则提供默认值。在 TypeScript 中,通常称为 Nullish Coalescing Operator,也是使用 ?? 符号。

这个运算符与 Swift 中的 nil 合并运算符类似,用于提供一个默认值,只有在变量为 null 或 undefined 时才使用默认值。

Swift Code

var userAge: Int?

let ageToUse = userAge ?? 0
print("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 的情况。

Swift Code

let names: [String]? = ["Alice", "Bob", "Semlinker"]

let firstCharacter = names?.first?.first
print(firstCharacter ?? "No names")

// Output: A

在以上代码中,names?.first?.first 将首先检查 names 是否为 nil,然后检查数组的第一个元素是否为 nil,最后获取第一个元素的第一个字符。

Swift Code

let names: [String]? = []

let firstCharacter = names?.first?.first
print(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 的相关特性。

原文地址:https://mp.weixin.qq.com/s/2TugTxDuz03sJLgHHcWpIw

延伸 · 阅读

精彩推荐
  • Swiftswift3.0网络图片缓存原理简析

    swift3.0网络图片缓存原理简析

    这篇文章主要为大家简析了swift3.0网络图片缓存原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    水桶前辈4932021-03-29
  • SwiftSwift Self详解及简单实例代码

    Swift Self详解及简单实例代码

    这篇文章主要介绍了Swift Self详解及简单实例代码的相关资料,这里对self 进行了详细介绍并附实例代码,需要的朋友可以参考下...

    jianshu4902021-02-23
  • SwiftSwift使用transform 实现重复平移动画效果

    Swift使用transform 实现重复平移动画效果

    这篇文章主要介绍了Swift使用transform 实现重复平移动画效果,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参...

    我为双鱼狂5022021-12-24
  • Swift在Swift程序中实现手势识别的方法

    在Swift程序中实现手势识别的方法

    这篇文章主要介绍了在Swift程序中实现手势识别的方法,苹果的Swift语言即将进入2.0开源阶段,人气爆棚中:D 需要的朋友可以参考下...

    Swift教程网3092020-12-21
  • SwiftSwift实现代码混淆详解

    Swift实现代码混淆详解

    本文详细讲解了Swift实现代码混淆的方法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小...

    shengkuiwang8462022-01-24
  • SwiftSwift中通过叠加UILabel实现混合进度条的方法

    Swift中通过叠加UILabel实现混合进度条的方法

    这篇文章主要介绍了Swift中通过叠加UILabel实现混合进度条的方法的相关资料,需要的朋友可以参考下...

    YouXianMing11032020-12-29
  • Swift详解Swift编程中下标的用法

    详解Swift编程中下标的用法

    这篇文章主要介绍了Swift编程中下标的用法,是Swift入门学习中的基础知识,需要的朋友可以参考下...

    Swift教程网2022020-12-23
  • Swift在Swift中如何使用正则表达式详解

    在Swift中如何使用正则表达式详解

    正则表达式是对字符串操作的一种逻辑公式,相信大家应该都不陌生,下面这篇文章主要给大家介绍了关于在Swift中如何使用正则表达式的相关资料,文中...

    游星啊8872021-01-12