Swift语言学习(三)基础操作符
操作符是用于检测、更改或者组合值的特殊符号或短语。例如,加法操作符 (+) 将两个数字加到一起 (如 let i = 1 + 2)。更复杂的例子包括逻辑与操作符 && (如 if enteredDoorCode && passedRetinaScan) 和自增操作符 ++i,就是把 i 的值加1的快捷方式。
Swift 支持大多数标准的C 操作符并且改善了几项功能以消除常见的编码错误。赋值操作符 (=) 不返回值,是为了防止想用等于操作符(==)时不小心用成了赋值操作符。算数运算符 (+, -, *, /, % 等等) 检测并禁止值溢出,以免运算时得出的结果大于或小于类型允许的范围。
不像C,Swift 可以对浮点数进行取余操作 (%) 。 Swift 还提供两个范围操作符 (a..<
b 和 a…b) ,这在C里是没有的,用来表示一个范围的值。
现在我们来简单介绍下 Swift 里的常用操作符。
术语
操作符分一元、二元和三元:
一元操作符操作于一个单一目标(如 -a)。一元前缀操作符在它们的目标之前紧跟出现(如 !b),一元后缀操作符在它们的目标之后紧跟出现(如 i++)。
二元操作符操作于两个目标(如 2 + 3),是中缀操作符,因为它出现在两个目标的中间。
三元操作符操作于三个目标。像 C 一样,Swift 只有一个三元操作符,就是三元条件操作符 (a ? b : c)。
操作符影响的值称为操作数。在表达式 1 + 2 中,符号 + 是一个二元操作符,它的操作数是值 1 和 2。
一、一元运算符
(一)、负号运算符
(二)、正号运算符
注 : 乘 (*)、 除 (/)与OC用法相同
(三)、自增、自减运算符
自减同上,本质上 跟OC没什么差别
二、二元运算符
(一)、赋值运算符
1、赋值操作符 (a = b) 用 b 的值初始化或更新 a 的值:
2、如果赋值操作符的右边是一个有多个值的元组,它的元素可以马上被拆解为多个常量或变量:
3、不像 C 和 Objective-C 里的赋值操作符,Swift 里的赋值操作符自身并不返回值。下面的语句是不行的:
这个特性防止了赋值操作符 (=) 被误用作等于操作符 (==) 。Swift 帮你避免 if x = y 这些错误在代码里出现。
(二)、取余运算符
(三)、组合赋值运算符
(四)、比较运算符
Swift 支持所有标准的 C 比较操作符,具体功能和使用方法与C语言相同,在此不再赘述
等于 (a == b)
不等于 (a != b)
大于 (a > b)
小于 (a < b)
大于或等于 (a >= b)
小于或等于 (a <= b)
(五)、逻辑运算符
Swift 支持基于C语言的三种标准的逻辑操作符:
逻辑否 (!a)
逻辑与 (a && b)
逻辑或 (a || b)
下面两个是swift新增的两个运算符:
(六)、区间运算符
1、全闭区间
闭合范围操作符 (a…b) 定义了一个从 a 到 b 的范围,同时包括a 和 b 的值。a 的值必须不能大于 b 。
2、半开半闭区间
半开范围特别适用于从0开始的列表,如数组,一直数到(但不包括)列表的长度
(七)、空合运算符
空合运算符(a ?? b
)将对可选类型a
进行空判断,如果a
包含一个值就进行解封,否则就返回一个默认值b
.这个运算符有两个条件:
表达式a
必须是Optional类型
默认值b
的类型必须要和a
存储值的类型保持一致
三、三元运算符
三元条件操作符分三个部分,形式是这样的 question ? answer1 : answer2。
例如:a > b ? a : b
使用功能同C语言的三木运算符,在此不再赘述
由于苹果公司发布Swift才刚满一年所有的功能都在不断地更新完善, 所以以上的内容之作参考之用,具体请关注Swift的最新资讯,或者参考Swift API 文档,谢谢。
欢迎加入iOS技术交流群 461069757
Swift语言学习(三)基础操作符的更多相关文章
- Swift语言指南(三)--语言基础之整数和浮点数
原文:Swift语言指南(三)--语言基础之整数和浮点数 整数 整数指没有小数的整数,如42,-23.整数可以是有符号的(正数,零,负数),也可以是无符号的(正数,零). Swift提供了8,16,3 ...
- Groovy语言学习--语法基础(1)
2018年11月末,从上家公司离职后进入现在的公司.进入项目以来,发现项目中有很多groovy脚本,以前没接触过groovy,抽时间系统地学一下,也方便后期项目的开发和维护. groovy和java的 ...
- 一份关于Swift语言学习资源的整理文件
一份关于Swift语言学习资源的整理文件 周银辉 在这里下载 https://github.com/ipader/SwiftGuide
- Groovy语言学习--语法基础(5)
至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实 ...
- Swift语言学习
因为想要学Mac os x编程,中文教材太少了,看了很多厉害的英文教材,很多都是swift语言的了,所以决定先要大体学一下swift语言. 学习一门语言,第一件事看swift官方文档,这里附上Coco ...
- swift语言学习博文精选
初探swift语言的学习笔记九(OC与Swift混编) Objective-C 与 Swift 混编之路 Swift项目兼容Objective-c问题汇总
- 【Swift】从零开始的Swift语言学习笔记-1:前言&Hello World
该系列分为两个大的部分. Swift基本语法 使用Xcode编写iOS应用程式 两个部分会双线并行更新. 本人的学习资料大多为Apple Develop官方上的生肉,难免会有疏漏,望斧正. 另外该系列 ...
- Swift语言学习之OC和Swift混编
本文转自http://www.helloswift.com.cn/swiftbase/2015/0112/3469.html iOS OC和Swift混编 1.创建一个swift或者oc的工程:我这里 ...
- Swift语言学习之学习资源
(1) http://swift.sh (2) Let's Swift – WRITE THE CODE. CHANGE THE WORLD. http://letsswift.com (3)http ...
随机推荐
- Day 10 Linux nfs && crond(摘)
(摘) 介绍: NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操作系 ...
- python3.x对python2.x变动
原文地址:http://rookiedong.iteye.com/blog/1185403 python 2.4 与 python 3.0 的比较 一. print 从语句变为函数 原: pr ...
- spark学习(六)Java版RDD基本的基本操作
1.map算子 private static void map() { //创建SparkConf SparkConf conf = new SparkConf() .setAppName(" ...
- IntelliJ IDEA常用统一设置(Linux/Mac/Windows)
前言:如果说VS是宇宙超级无敌第一大开发工具,那么IDEA是当之无愧的第二大开发工具,将来有机会把VS干掉. 说明:除了以下说明的配置地方外,其它尽量保持默认,这样有利于团队代码风格的统一. 运行VM ...
- systemtap初体验
https://phpor.net/blog/post/3471 写在前面: systemtap依赖的debuginfo可以从这里(http://debuginfo.centos.org/6/x86_ ...
- ceph工作原理和安装
一.概述 Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目.随着云计算的发展,ceph乘上了OpenStack的春风,进而成为了开源社区受关注较高的项目之 ...
- Invocation of destroy method failed on bean with name ‘XXXX’
项目启动报错问题:Invocation of destroy method failed on bean with name 'scopedTarget.eurekaClient': org.spri ...
- Solidworks如何将参考平面的图形投影到某曲面上
1 画好草图,点击曲线-分割线 2 选择要投影的草图和被投影的面(那个球面),最后效果如下图所示 3 为了获取连续的轨迹,我们可以再次选择这个草图,然后在投影面中选择平面,最后得到的图形如下图 ...
- node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中
步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...
- oracle 导出数据字典
一.查看当前用户下表名,及表名的备注 select * from user_tab_comments where table_name like 'T_ONLINE%' 二.查询数据字典 -- 1. ...