swift学习笔记(2)-基本运算符

Android wifi源码分析(二) Wifi关闭流程 接着上一篇,这篇说一下Wifi的关闭流程。 由上一篇可以知道,framework层提供的wifi开关接口都是**setWifiEnabled**,只是参数不同而已。*true*表示开启wifi、*false*表示关闭wifi。 阅读详情

赋值运算符

var 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 中所有数值类型都支持了基本的四则算术运算符:

  • 加法(+)
  • 减法(-)
  • 乘法(*)
  • 除法(/)

与 C 语言和 Objective-C 不同的是,Swift 默认情况下不允许在数值运算中出现溢出情况。但是你可以使用 Swift 的溢出运算符来实现溢出运算(如 a &+ b)。详情参见溢出运算符。

加法运算符也可用于 String 的拼接:

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

求余运算符

a = (b × 倍数) + 余数
a % b 的结果就是上面的余数,a为负数以上格式还是通用。

注意:在对负数 b 求余时,b 的符号会被忽略。这意味着 a % b 和 a % -b 的结果是相同的。

组合赋值运算符

var a = 1
a += 2
// a 现在是 3

注意:复合赋值运算没有返回值,let b = a += 2这类代码是错误。这不同于上面提到的自增和自减运算符。

比较运算符(Comparison Operators)

  • 等于(a == b)
  • 不等于(a != b)
  • 大于(a > b)
  • 小于(a < b)
  • 大于等于(a >= b)
  • 小于等于(a <= b)

当元组中的值可以比较时,你也可以使用这些运算符来比较它们的大小。例如,因为 Int 和 String 类型的值可以比较,所以类型为 (Int, String) 的元组也可以被比较。相反,Bool 不能被比较,也意味着存有布尔类型的元组不能被比较。

比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的

(1, "zebra") < (2, "apple")   // true,因为 1 小于 2
(3, "apple") < (3, "bird")    // true,因为 3 等于 3,但是 apple 小于 bird
(4, "dog") == (4, "dog")      // true,因为 4 等于 4,dog 等于 dog

注意:Swift 标准库只能比较七个以内元素的元组比较函数。如果你的元组元素超过七个时,你需要自己实现比较运算符。

三目运算符(Ternary Conditional Operator)

let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight 现在是 90

空合运算符(Nil Coalescing Operator)

空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。

空合运算符是对以下代码的简短表达方法:

a != nil ? a! : b

上述代码使用了三目运算符。当可选类型 a 的值不为空时,进行强制解封(a!),访问 a 中的值;反之返回默认值 b。无疑空合运算符(??)提供了一种更为优雅的方式去封装条件判断和解封两种行为,显得简洁以及更具可读性。

注意: 如果 a 为非空值(non-nil),那么值 b 将不会被计算。这也就是所谓的短路求值。

下文例子采用空合运算符,实现了在默认颜色名和可选自定义颜色名之间抉择:

let defaultColorName = "red"
var userDefinedColorName: String?   //默认值为 nil

var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName 的值为空,所以 colorNameToUse 的值为 "red"

闭区间运算符

闭区间运算符(a…b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b。 ‌ 闭区间运算符在迭代一个区间的所有值时是非常有用的,如在 for-in 循环中:

for index in 1...5 {
    print("\(index) * 5 = \(index * 5)")
}
// 1 * 5 = 5
// 2 * 5 = 10
// 3 * 5 = 15
// 4 * 5 = 20
// 5 * 5 = 25

半开区间运算符

半开区间运算符(a..<b)定义一个从 a 到 b 但不包括 b 的区间。 半开区间的实用性在于当你使用一个从 0 开始的列表(如数组)时,非常方便地从0数到列表的长度。

let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("第 \(i + 1) 个人叫 \(names[i])")
}
// 第 1 个人叫 Anna
// 第 2 个人叫 Alex
// 第 3 个人叫 Brian
// 第 4 个人叫 Jack

逻辑运算符(Logical Operators)

逻辑运算符的操作对象是逻辑布尔值。Swift 支持基于 C 语言的三个标准逻辑运算。

  • 逻辑非(!a)
  • 逻辑与(a && b)
  • 逻辑或(a || b)

可以使用括号来明确优先级

【科普知识】什么是驱控一体化伺服电机? 驱控一体化伺服电机以其高度的集成性、兼容性、便捷性以及卓越的性能表现,成为了现代工业自动化领域的一颗璀璨明珠。对于那些追求高效、精准、智能控制的行业用户而言,它无疑是一种理想的选择。 阅读详情

相关推荐

su03t语音模块烧录识别不出问题解决方法

su03t语音sdk烧录无法识别问题

weixin_49387645的博客 6388

求余运算符

笔记摘自《极客学院》 求余运算(a % b)是计算b的多少倍刚刚好可以容入a,返回多出来的那部分(余数)。 注意:求余运算(%)在其他语言也叫取模运算。然而严格说来,我们看该运算符对负数的操作结果,"求余"比"取模"更合适些。 我们来谈谈取余是怎么回事,计算9 % 4,你先计算出4的多少倍会刚好可以容入9中: 2倍,非常好,那余数是1(用橙色标出) 在 Swift 中可以表达为: ...

weixin_33754913的博客 4134

ODrive0.5.5源码分析(1) ADC的处理

odrive 0.5.5 ADC

danger的博客 4307

Swift2.2 学习笔记(九) ___基本运算符

基本运算符 术语 赋值运算符 赋值运算 a = b,表示用b的值来初始化或更新a的值 let b = 10 var a = 5 a = b //a 现在等于 10如果赋值的右边是一个多元组,它的元素可以马上被分解多个常量或变量let (x, y) = (1,2) // x 等于 1, y 等于 2//与 c & oc 不同,Swift的赋值操作并不返回任何值,所以一下代码是错误的 //if x =

嗄花花__ 430

Ubuntu22.04中通过conda快速部署PyTorch开发环境(CPU/GPU双版本实战)

本文详细介绍了在Ubuntu22.04系统中,如何利用Conda高效部署PyTorch开发环境。文章分别提供了CPU与GPU双版本的实战教程,涵盖环境创建、镜像加速、版本匹配及深度验证等关键步骤,旨在帮助开发者快速搭建稳定、兼容的深度学习环境,从而专注于模型开发。

rose2的博客 555

ROS中tf2_ros::Buffer.lookupTransform的正确使用姿势:从踩坑到填坑

本文深入解析了ROS中tf2_ros::Buffer.lookupTransform接口的正确使用方法,重点剖析了因tf2_ros::TransformListener生命周期管理不当导致的经典问题。文章提供了从理解Buffer与Listener共生关系、类成员设计黄金法则到参数详解与异常处理的完整避坑指南,并给出了构建健壮坐标变换工具类的实战方案,帮助开发者稳定实现机器人坐标系变换。

weixin_29253711的博客 133

Swift2.0学习笔记(一)之基本数据类型与运算符

Swift 2.0 基本类型 let 常量 var 变量 //隐式定义 var s let b //显式定义 var s: String let b: Int = 600 var a, b, c: Double 常用类型 两个不同类型转换时必须显式转换 Int整型,UInt 无符号整型,Int8 8位整型,Int16,Int32,Int64 Int.max Int...

var Super-Yu: Coder 190

用 SAP CDS View 和 Fiori Elements 快速打造 CRM Service Order 应用──十分钟跑通从数据模型到上线的全流程

通过CDS 视图 + Fiori Elements的组合,我们得以在极短时间内把传统 CRM Service Order 场景迁移到现代化的 Fiori 界面,而且代码量极小、可维护性高。若后续需要离线能力,可考虑将同一 OData 服务暴露给 Mobile Services,再配合 MDK 或 UI5 Mobile Toolkit;若要支持复杂审批流,则可以在同一 Launchpad 内嵌入 Process Visibility Dashboard,实现端到端可视化。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 388

Swift 基本运算符

运算符是检查、改变、合并值的特殊符号或短语。例如,加号(+)将两个数相加(如 let i = 1 + 2)。更复杂的运算例子包括逻辑与运算符 &&(如 if enteredDoorCode && passedRetinaScan)。Swift 所支持运算符你可能在别的语言比如 C 语言里已经认识了,同时为了减少常见编码错误对它们做了部分改进。如:赋值符(=)不再有返回值,这样就消除了手误将判等运算符(==)写成赋值符导致代码错误的缺陷。

xiaoxiaobukuang的专栏 1415

GEE:基于自定义的年度时序数据集进行LandTrendr变化检测

本文介绍了使用年度时序数据进行LandTrendr变化检测的方法,包括核心函数调用、参数设置和结果可视化。通过筛选参数(年份、变化幅度和持续时间)对结果进行过滤,输出变化年份、变化幅度和持续时间。代码提供了完整的处理流程,包括数据输入、LandTrendr算法运行、结果筛选与可视化,并支持结果导出。适用于基于Google Earth Engine平台的地表变化检测分析。

养乐多的博客 751

下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)

下载MNIST数据集并使用python将数据转换成NumPy数组首先来分析init_mnist函数接下来继续分析load_mnist函数实现数据集转换的python脚本的代码显示MNIST图像并确认数据 下载MNIST数据集并将数据转换成NumPy数组的Python脚本里面最重要的就是load_mnist函数,其他项目想要调用数据集的话,就可以调用load_mnist函数,得到一个字典类型的数据,字典的值是一个Numpy数组。 这些过程是如何实现的,现在开始逐字逐句分析源码: 在load_mnist函数中第

及时总结 4266

Swift learning part 2 - 基本运算符

基本运算符术语赋值运算符算术运算符求余运算符一元运算符组合赋值运算符比较运算符三元运算符空合运算符区间运算符闭区间运算符半开区间运算符单侧区间逻辑运算符逻辑非运算符逻辑与运算符逻辑或运算符逻辑运算符组合计算使用括号来明确优先级 运算符是检查、改变、合并值的特殊符号或短语,Swift 支持大部分标准 C 语言的运算符,且改进了许多特性来减少常规编码错误。如:赋值符 (=) 不返回值,以防止想要把判断...

毛毛虫 1651

Altium Designer 超详细入门教程

本文是一份Altium Designer新手入门教程,详细介绍了从软件基础到PCB制版的全流程。主要内容包括:软件界面介绍与工程创建方法;原理图设计中的元件放置、电气连线、标注添加等操作;PCB设计的布局布线、铺铜和DRC检查;Gerber和钻孔文件的导出方法。教程还提供了分类整理的实用快捷键表和新手避坑指南,强调原理图编译和DRC检查的重要性。通过本教程,新手可以快速掌握AD基本操作,完成简单电路板的设计与制版文件导出。

学习中...... 815

Swift基本运算符详解

运算符是检查,改变,合并值的特殊符号或短语。例如,加号+将两个数相加(如let i = 1 + 2)。复杂些的运行算例如逻辑与运算符&&(如if enteredDoorCode && passedRetinaScan),又或让 i 值加1的便捷运算符自增运算符++i等。 Swift 支持大部分标准 C 语言的运算符,且改进许多特性来减少常规编码错误。如,赋值符(=)不返回值,以防止把想要判断

听海Movie的专栏 642

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Swift6.1 - 基本运算符

Swift运算符分为基本运算符、算术运算符、比较运算符等。基本运算符包括赋值(=)、算术(+、-、*、/、%)和比较(==、>等)。Swift改进了C语言的运算符,如赋值运算符不返回值以避免错误。还新增了区间运算符(..<、...)。运算符分为一元、二元和三元,三元条件运算符(a ? b : c)是唯一的三元运算符。算术运算符禁止值溢出,支持字符串拼接。比较运算符返回布尔值,支持元组比较。三元运算符简化条件判断,如rowHeight = contentHeight + (hasHeader ?

chenzimin_blog 1217

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Swift3.0学习笔记-Basic Operators(基本运算符)

Swift第2节

brycegao321的博客 1040

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

swift之基本运算符——2

基本的运算符无法就是(+ - * / ),还有常见的比较运算符(&gt; 、&lt; 、  &lt;=、 &gt;= 、==、!=、)。1、先从最基本的运算符开始(+ 、- 、 *、/)let a = 10 //把10赋值给了a let b = 5 var c = ((a+b)/(a-b))*b print(c) //打印出C的值为:152、还有“余数”运算符 %,比如:let a = 9...

lxmgoodlucky的博客 249

Swift-基本运算符

简介 Swift 支持大部分标准 C 语言的运算符,且为了减少常见编码错误做了部分改进。 如:赋值符(=)不再有返回值,这样就消除了手误将判等运算符(==)写成赋值符导致代码错误的缺陷。 算术运算符(+,-,*,/,% 等)的结果会被检测并禁止值溢出,以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致的异常结果。 1. 元组比较 两个元组的元素相同,且长度相同的话,元组就可以被...

hkasdfiu12 226

【Swift】运算符

运算符是检查、改变、合并值的特殊符号或短语。例如,加号(+)将两个数相加(如 let i = 1 + 2)。更复杂的运算例子包括逻辑与运算符 &&(如 if enteredDoorCode && passedRetinaScan)。Swift 支持大部分标准 C 语言的运算符,且为了减少常见编码错误做了部分改进。如:赋值符(=)不再有返回值,这样就消除了手误将判等运算符(==)写成赋值符导致代码错误的缺陷。

qq_30450549的博客 833

swift 学习day2 基本运算符

运算符是检查、改变、合并值的特殊符号或短语。例如,加号(+)将两个数相加(如 let i = 1 + 2)。更复杂的运算例子包括逻辑与运算符 &&(如 if enteredDoorCode && passedRetinaScan)。 Swift 支持大部分标准 C 语言的运算符,且改进许多特性来减少常规编码错误。如:赋值符(=)不返回值,以防止把想要判断相等运算符(...

king9666的博客 336

swift学习心得 - 基本运算符

闲言碎语:apple的swift已经2.1了,自己刚看1.0的时候总觉得swift还太年轻,还有很多不完善,就没有太在意。不过现在都更新到2.1了。apple的官方宣传说swift效率很高(开发和性能)再加上BOSS说以后要用swift开发.自己就开始学习swift。看了两天写下自己的心得 一,基本运算符 swift​中的基本运算符: 赋值运算符( a=b ) 算术运算符( a+b、a

u010766300的博客 436

Swift中文教程(二)基本运算符

1、基本运算符   运算符是一种特定的符号或表达式,用来检验、修改或合并变量。例如,用求和运算符+可以对两个数字进行求和(如let i = 1 + 2);稍微复杂一点的例子有逻辑与操作符&& (如if enteredDoorCode && passedRetinaScan) ,自增长运算符 ++i (这是i=i+1的简写方式) Swift支持C标准库中的大多数运算符并提升了各自的

迟浩东 iOS开发博客 1031

Swift(四、基本运算符及高级操作符)

Swift学习笔记(第一版),对Swift的基础知识点进行梳理总结 基本运算符及高级操作符(范围运算符,溢出运算符)

弄潮者的博客 1085

Swift(三)基本运算符

Swift支持大部分标准C语言的运算符,并且对许多特性进行改进来减少常规编码的错误。除了支持基本运算符外,Swift还提供了2个特殊的运算符,分别是:溢出运算符和区间运算符 首先看下基本运算符 import UIKit var str = "Hello, playground" /** 赋值运算符 1. 注意⚠️:与C语言和OC不同,Swift的赋值操作并...

184

iOS Swift No.2 - 基本运算符

swift里面的基本运算操作和其他语言里的都是一样的,有算术运算,逻辑运算,范围运算等 1. Unary Operators (一元运算符) 2. Binary Operators (二元运算符) 3. Ternary Operators (三元运算符) 几元的运算操作就是几个操作数之间的运算,一元( -1 )一个操作数,二元( 1 + 1 )两个操作数,三元( a ? b : c )三个操作数。

Hello Swift ! 396

Swift基本运算符

//=========================================================         /*         赋值运算符   =         */                  let a = 12         var b = 13         let c = b         var d =

水清_木秀的博客 522
上一篇: swift学习笔记(1)-基础语法
下一篇: swift学习笔记(3)-字符串
winterLiao
博客等级 码龄10年 5粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值