Swift基本运算符_2

术语

运算符分为一元,二元,三元运算符

  • 一元运算符对单一操作对象进行操作(如-a),一元运算符又分前置前置运算符和后置运算符,前置运算符紧跟操作对象之前(如!b),后置运算符紧跟操作运算符之后(如c!)
  • 二元运算符操作两个对象(如2+3),是中置的,放在两个操作对象中间
  • 三元运算符,和c语言一样,swift只有一种三元运算符,就是三目运算符(a?b:c)

受运算符影响的较操作数,在表达式1+2中,+就是运算符,12就是操作数

赋值运算符

赋值运算符a=b,表示用b的值来初始化或者更新a
a=b不返回任何值

算术运算符

swift中所有的数值类型都支持来基本的四则算术运算符

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

加法运算符可以拼接字符串

var addStr = "i am" + "Edison"

求余运算符

求余运算符(a%b)是计算 b的多少倍刚好可以容下a,返回多出来的那部分(余数)

注意:
求余运算符(%)在其他语言也叫取模运算符。但是严格说来,我们看该运算符对负数的操作结果,「求余」比「取模」更合适些

9 % 4    // 等于 1

为了得到a % b的结果,% 计算了以下等式,并输出余数作为结果:

a = (b × 倍数) + 余数

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

组合赋值运算符

跟c语言一样,Swift 也提供把其他运算符和赋值运算(=)组合的组合赋值运算符,组合加运算(+=)(-=) 等等

复合赋值运算没有返回值,所以let b = a+=5是错误的

比较运算符

原标准的c语言中的比较运算符都可以在swift中使用

  • 等于 ==
  • 不等于 !=
  • 大于 >
  • 小于 <
  • 大于等于 >=
  • 小于等于 <=

每个比较运算都返回了一个标识表达式是否成立的布尔值

比较运算多用于条件语句,如if条件

空合运算符

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

空合运算符是对一下代码的简短表达方式

a  !=  nil ? a! : b

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

区间运算符

闭区间运算符

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

for index in 1...6 {
    
    print(index)
}

上面的例子中,index 是一个每次循环遍历开始时被自动赋值的常量。这种情况下,index在使用前不需要声明,只需要将它包含在循环的声明中,就可以对其进行隐式声明,而无需使用let 关键字声明。

如果你不需要区间序列内每一项的值,你可以使用下划线(_)替代变量名来忽略这个值:

let base = 3
let power = 10
var answer = 1
for _ in 1...power {
    answer *= base
}
print("\(base) to the power of \(power) is \(answer)")
// 输出 "3 to the power of 10 is 59049"
半开区间运算符

半开区间运算符(a..<b)定义一个从ab但不包括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

单侧区间

闭区间操作符有另一个表达形式,可以表达往一侧无限延伸的区间 —— 例如,一个包含了数组从索引 2 到结尾的所有值的区间。在这些情况下,你可以省略掉区间操作符一侧的值。这种区间叫做单侧区间,因为操作符只有一侧有值

let names = ["Anna", "Alex", "Brian", "Jack","Fucy","Nacy","Lugy"]
let count = names.count
for j in [...4] {

    print(names[j])
}
/*
["Anna", "Alex", "Brian", "Jack", "Fucy"]
*/
let names = ["Anna", "Alex", "Brian", "Jack","Fucy","Nacy","Lugy"]
let count = names.count
for j in [1...] {

    print(names[j])
}
/*
["Alex", "Brian", "Jack", "Fucy", "Nacy", "Lugy"]
*/

半开区间操作符也有单侧表示形式
[..<2] [..<2]

逻辑运算符

  • 逻辑非(!a)
  • 逻辑与(a && b)
  • 逻辑或(a || b)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容