【Swift中文教程】-- 基本运算符

本文深入探讨了Swift编程语言中的运算符,包括赋值、算术、比较、三元条件和逻辑运算符,以及Swift特有的浮点数求余、区间运算符等特性,帮助开发者理解和运用这些核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运算符(operator)是用于检查、更改或组合值的特殊符号或短语。例如,加法运算符(+)求两个数字的加和(用例let i = 1 + 2)。更复杂的例子包括逻辑与(logicalAND)运算符&&(用例 if 已输入门禁密码 && 已通过视网膜扫描) 以及自增运算符 ++i,后者是将 i 存储的值加上 1 的便捷写法。

Swift 支持标准 C 的大多数运算符,并改进了部分行为特性,以避免常见的编码错误。赋值运算符(=)不会返回值,这样可避免在打算使用等于运算符(==)的地方误用前者。算术运算符(+、-、*、/、% 等)会侦测并阻止值溢出,可避免处理超出可存储值域范围的数时出现意料之外的结果。如果需要支持溢出,可以选用 Swift 的溢出运算符,详见 溢出运算符。

与 C 语言不同,Swift 允许对浮点数求余(%)。Swift 还提供了两种 C 语言没有的范围运算符(a..b 与 a...b),作为表达值域范围的便捷写法。 本章讲解 Swift 中的常用运算符。高级运算符一章涉及了 Swift 的高级运算符,并讲解了如何自定义运算符,以及让标准运算符支持自定义类型的运算。

目录

 [隐藏

[编辑]术语

运算符分为一元、二元以及三元运算符:

  • 一元运算符(unary operator)对单个目标进行运算(如 -a)。一元前缀运算符(unaryprefix operator)置于运算目标之前(如 !b),而一元后缀运算符(unary postfix operator)紧跟目标之后(如 i++)。
  • 二元运算符(binary operator)对两个目标进行运算(如 2 + 3),它们属于中缀(infix)运算符,因为出现在运算对应的两个目标之间。
  • 三元运算符(ternary operator)对三个目标进行运算。与 C 语言一样,Swift 只有一个三元运算符:三元条件运算符(即 a ? b : c)。

运算符操作的值称为运算数(operands)。在表达式 1 + 2 中,+ 符号是二元运算符,它的两个运算数为值 1与值 2。

[编辑]赋值运算符

赋值运算符(assignment operator,a = b)用 b 的值初始化或更新 a 的值:

let b  =  10
var a  =  5
= b
// a 的值现在等于 10

如果赋值语句的右侧是包含多个值的元组,其元素可一次性提取为多个常量或变量:

let  (x , y )  =  ( 1 ,  2 )
// x 等于 1,y 等于 2

与 C / Objective-C 语言的赋值运算符不同,Swift 语言的运算符本身不会返回值。因此下面的语句不正确:

if x  = y  {
// 语句无效,因为“x = y”不会返回值
}

该特性可避免在希望使用等于运算符(==)的地方误用赋值运算符(=)。通过不承认 if x = y 的有效性,Swift 将帮助你避免代码中出现这样的错误。

[编辑]算术运算符

Swift 支持对所有数字类型使用四种标准的算术运算符(arithmeticoperator):

  • 加法(+)
  • 减法(-)
  • 乘法(*)
  • 除法(/)
1  +  2  // 等于 3
5  -  3  // 等于 2
2  *  3  // 等于 6
10.0  /  2.5  // 等于4.0

与 C / Objective-C 语言的算术运算符不同,Swift 的算术运算符默认不允许值溢出。若要支持溢出特性,可以使用 Swift 的溢出运算符(如 a &+ b)。参见 溢出运算符。

加法运算符还支持 String 连接:

"hello, "  +  "world"  // 等于 "hello, world"

可以将两个 Character 值相加,或将一个 Character 值与一个 String 值相加,得到新的 String 值:

let dog : Character  =  "
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 华为移动服务(Huawei Mobile Services,简称 HMS)是一个全面开放的移动服务生态系统,为企业和开发者提供了丰富的工具和 API,助力他们构建、运营和推广应用。其中,HMS Scankit 是华为推出的一款扫描服务 SDK,支持快速集成到安卓应用中,能够提供高效且稳定的二维码和条形码扫描功能,适用于商品扫码、支付验证、信息获取等多种场景。 集成 HMS Scankit SDK 主要包括以下步骤:首先,在项目的 build.gradle 文件中添加 HMS Core 库和 Scankit 依赖;其次,在 AndroidManifest.xml 文件中添加相机访问和互联网访问权限;然后,在应用程序的 onCreate 方法中调用 HmsClient 进行初始化;接着,可以选择自定义扫描界面或使用 Scankit 提供的默认扫描界面;最后,实现 ScanCallback 接口以处理扫描成功和失败的回调。 HMS Scankit 内部集成了开源的 Zxing(Zebra Crossing)库,这是一个功能强大的条码和二维码处理库,提供了解码、生成、解析等多种功能,既可以单独使用,也可以与其他扫描框架结合使用。在 HMS Scankit 中,Zxing 经过优化,以更好地适应华为设备,从而提升扫描性能。 通常,ScanKitDemoGuide 包含了集成 HMS Scankit 的示例代码,涵盖扫描界面的布局、扫描操作的启动和停止以及扫描结果的处理等内容。开发者可以参考这些代码,快速掌握在自己的应用中实现扫码功能的方法。例如,启动扫描的方法如下: 处理扫描结果的回调如下: HMS Scankit 支持所有安卓手机,但在华为设备上能够提供最佳性能和体验,因为它针对华为硬件进行了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值