iOS Swift逻辑运算符
运算符
运算符分类
从操作数角度看:运算符包括一元、二元、三元。这里的一二三指操作数的数量,操作数指的是被操作的数值。
从运算符位置看:运算符分为前缀、中缀、后缀。例如:!b, b + c, c!
赋值运算符
赋值运算符( a = b )可以初始化或者更新 a 为 b 的值:
如果赋值符号右侧是拥有多个值的元组,它的元素将会一次性地拆分成常量或者变量:
let (x, y) = (1, 2)
// x 等于 1, 同时 y 等于 2
与 Objective-C 和 C 不同,Swift 的赋值符号自身不会返回值。下面的语句是不合法的:
if x = y {
// 这是不合法的, 因为 x = y 并不会返回任何值。
}
这个特性避免了赋值符号 (=
) 被意外地用于等于符号 (==
) 的实际意图上。Swift 通过让 if x = y 非法来帮助你避免这类的错误在你的代码中出现。
算数运算符
- 加 ( + ),:作为中缀,表示两个数值相加,如果是字符串,表示字符串拼接;作为前缀,表示正数,数值不变
- 减 ( - ): 作为中缀,表示两个数值相减;作为前缀,表示负数
- 乘 ( * )
- 除 ( / )
- 取余(%):余数运算符( a % b )可以求出多少个 b 的倍数能够刚好放进 a 中并且返回剩下的值(就是我们所谓的余数)。9 % 4 = 1, 因为 4 * 2 + 1 = 9
组合运算符
+= 、 -= 、/= 、*=
var a = 1
a += 2
表达式 a += 2 其实就是 a = a + 2 的简写。效率上来讲,加号和赋值符号组合成的一个运算符能够同时进行这两个操作。
比较运算符
下面是常规的比较运算符:
- 相等 ( a == b )
- 不相等 ( a != b )
- 大于 ( a > b )
- 小于 ( a < b )
- 大于等于 ( a >= b )
- 小于等于 ( a <= b )
也可以用在相同数量的元组中, 元组以从左到右的顺序比较大小,一次一个值,直到找到两个不相等的值为止。如果所有的值都是相等的,那么就认为元组本身是相等的。
Swift 标准库包含的元组比较运算符仅支持小于七个元素的元组。要比较拥有七个或者更多元素的元组,你必须自己实现比较运算符。
(1, "zebra") < (2, "apple") // true because 1 is less than 2
(3, "apple") < (3, "bird") // true because 3 is equal to 3, and "apple" is less than "bird"
(4, "dog") == (4, "dog") // true because 4 is equal to 4, and "dog" is equal to "dog"
三目运算符
三元条件运算符是一种有三部分的特殊运算,它看起来是这样的: question ? answer1 : answer2 。这是一种基于 question 是真还是假来选择两个表达式之一的便捷写法。
三元条件运算符提供了一个非常有效的简写来决策要两个表达式之间选哪个。总之,使用三元条件运算符要小心。它的简洁性会导致你代码重用的时候失去易读的特性。避免把多个三元条件运算符组合到一句代码当中。
合并空值运算符
合并空值运算符 ( a ?? b )如果可选项 a 有值则展开,如果没有值,是 nil ,则返回默认值 b 。表达式 a 必须是一个可选类型。表达式 b 必须与 a 的储存类型相同。
合并空值运算符是下边代码的缩写:
a != nil ? a! : b
区间运算符
闭区间运算符( a...b )定义了从 a 到 b 的一组范围,并且包含 a 和 b 。 a 的值不能大于 b 。
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}
半开区间运算符( a..<b )定义了从 a 到 b 但不包括 b 的区间,即 半开 ,因为它只包含起始值但并不包含结束值
单侧区间:有另外一种形式来让区间朝一个方向尽可能的远。比如说,一个包含数组所有元素的区间,从索引 2 到数组的结束。在这种情况下,你可以省略区间运算符一侧的值。因为运算符只有一侧有值,所以这种区间叫做单侧区间。闭区间和半开区间都有单侧区间的形式。比如说:
let names = ["Anna", "Alex", "Brian", "Jack"] for name in names[2...] {
print(name)
}
// Brian
// Jack for name in names[...2] {
print(name)
}
// Anna
// Alex
// Brian for name in names[..<2] {
print(name)
}
// Anna
// Alex
逻辑运算符
- 逻辑 非 ( !a ):取反
- 逻辑 与 ( a && b ) :短路与。如果第一个值是 false ,那么第二个值就会被忽略掉了,因为它已经无法让整个表达式再成为 true 。这就是所谓的 短路计算
- 逻辑 或 ( a || b ):短路或。如果逻辑或运算符左侧的表达式为 true ,那么右侧则不予考虑了,因为它不会影响到整个逻辑表达式的结果。
- Swift 语言中逻辑运算符 && 和 || 是左相关的,这意味着多个逻辑运算符组合的表达式会首先计算最左边的子表达式。
小编为大家整理日常开发需要的逻辑运算希望对你有所帮助,青山不改,绿水长流,感谢每位佳人的支持!
iOS Swift逻辑运算符的更多相关文章
- iOS swift的xcworkspace多项目管理(架构思想)
iOS swift的xcworkspace多项目管理(架构思想) 技术说明: 今天在这里分享 swift下的 xcworkspace多项目管理(架构思想),能为我们在开发中带来哪些便捷?能为我们对整 ...
- iOS Swift 模块练习/swift基础学习
SWIFT项目练习 SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图 +控件 1.UIImag ...
- ios swift 实现饼状图进度条,swift环形进度条
ios swift 实现饼状图进度条 // // ProgressControl.swift // L02MyProgressControl // // Created by plter on 7/2 ...
- Building gRPC Client iOS Swift Note Taking App
gRPC is an universal remote procedure call framework developed by Google that has been gaining inter ...
- iOS Swift WisdomScanKit图片浏览器功能SDK
iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介 WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...
- iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK
iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言: 今天给大家 ...
- iOS Swift WisdomHUD 提示界面框架
iOS Swift WisdomHUD 提示界面框架 Framework Use profile(应用简介) 一:WisdomHUD简介 今天给大家介绍一款iOS的界面显示器:WisdomHUD,W ...
- iOS Swift WisdomKeyboardKing 键盘智能管家SDK
iOS Swift WisdomKeyboardKing 键盘智能管家SDK [1]前言: 今天给大家推荐个好用的开源框架:WisdomKeyboardKing,方面iOS日常开发,优点和功能请 ...
- iOS swift项目IM实现,从长连接到数据流解析分析之Socket
iOS swift项目IM实现,从长连接到底层数据解析分析之Socket 一:项目简介: 去年开始接手了一个国企移动项目,项目的需求是实现IM即时通讯功能. * 一期版本功能包括了: ...
随机推荐
- ubuntu编译安装python3.6.5
去官网下载安装包放到~/software/ 下 1更新软件库 sudo apt-get update 2安装相应的开发库 sudo apt-get install zlib1g-dev libbz ...
- JDBC高级篇(MYSQL)—— JDBC中初涉数据库事务
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package d_transaction; import java.sql.Connection; import java.sql ...
- Servlet的类加载器
Java虚拟机中内嵌的一个类加载器:Bootstrap,属于Java虚拟机的内核,负责加载Java核心包中的类(即rt.jar文件中的类):Java核心包中有另外两个类加载器:ExtClassLoad ...
- indexedDB数据库创建
1.首先需要使用使用indexedDB.open()方法,打开数据库 2.通过createObjectStore方法创建表, 创建表之后, 这个表通过createIndex方法创建索引 3.通过tra ...
- QT如何发布应用程序和图标
1.程序图标 ①创建一个图标格式的文件,可以网上在线将普通的图形格式转成.ico 格式的图标文件 http://www.faviconico.org/ 这个网站可以在线转换png.jpg.gif文件为 ...
- Mybatis(三)——全局配置文件
二.properties 三.settings 四.typeAilases 这里不做介绍.
- Shiro03
1.shiro授权角色.权限 2.Shiro的注解式开发 shiro权限思路 授权 ShiroUserMapper中定义两个方法 // 通过用户ID查询角色 Set<String> get ...
- vue+element+echarts柱状图+列表
前端由vue+element搭建框架,引入vue和element的index.js和css就可以写页面: 页面和js可以echarts官网实例看下都是有的,主要看下如何动态赋值: 柱状图和列表: &l ...
- 自己用树莓派做了一个电视盒子,还可以看优酷和cctv
我刚接触树莓派时间不久,安装过raspberry(树莓派官方系统),ubuntu mate,openelec等系统,openelec是一个电视盒子系统,但是我的用的电视机是一个老式的,老是出现闪屏的问 ...
- ESP8266- ESP01之AT固件下载及其他问题
注意: 本文基于淘宝上买的安信可原装ESP-01,文章中出现的问题在另一片ESP-01S上均未出现.由于在刷固件前没有进行完整测试,因此无法判断是固件导致的还是版本不同造成的. 问题: 1.发热严重. ...