Swift 4官方文档中文版/ Basic Operators(上)
翻译 : Stevin三天三夜 (Blog / GitHub) 校对 : Jonhory (简书 / GitHub) 译者心声我们会不定期的更新翻译文章,Guards翻译组本周内会发布 Basic Operators下半部分 章节中文版. 如感兴趣,可以关注<我们的简书,获取翻译组更多文章>
本篇包含内容:
基本运算符运算符是检查,改变或合并值的特殊符号和短语。比如:加号( Swift支持多数标准 C 操作符,并且为了消除常见的编码错误改进了几种特性。例如:赋值运算符( Swift还提供了 C 没有的区间运算符,比如: 本章描述了Swift常见的运算符,Advanced Operators这章涵盖了Swift的高级运算符,并且介绍如何自定义运算符和标准实现运算符自定义类型。 术语运算符有一元运算符、二元运算符和三元运算符。
运算符影响的值叫操作数,在表达式 赋值运算符赋值运算符( let b = 10
var a = 5
a = b
// 此时 a 等于10
如果赋值的右边是一个多元组,那它的元素被分成多个常量或变量: let (x,y) = (1,2)
// 此时 x 等于 1,y 等于 2
Swift的赋值操作符不同于 C 和 Objective-C,它没有返回值,所以下面的代码是错误的: if x = y {
// 这是错误的,因为x = y没有返回值
}
这个特性能够防止你使用( 算数运算符Swift支持所有数值类型的常见四则运算
1 + 2 // 等于3
5 - 3 // 等于2
2 * 3 // 等于6
10.0 / 2.5 //等于4.0
Swift的算数运算符不同于 C 和 Objective-C 的是默认情况下不允许溢出。你可以使用Swift的溢出运算符进行溢出运算(如: 加法运算符也支持 "hello," + "world" // 等于 “hello, world”
求余运算符求余运算符(
求余计算的方式,计算 两个 在Swift中表达为: 9 % 4 // 等于1
为了得到 a = (b * 倍数) + 余数
当倍数取到最大值的时候乘上 把 9 = (4 * 2) + 1
相同的方法,可以计算负数 -9 % 4 // 等于-1
把 -9 = (4 * -2) + -1
余数是 一元减号运算符数值的符号可以切换使用前缀 let three = 3
let minusThree = -three //minusThree等于-3
let plusThree = -minusThree //plusThree等于3,或“负负3”
一元减号( 一元加号操作符一元加号操作符( let minusSix = -6
let alsoMinusSix = +minusSix //alsoMinusSix等于-6
尽管一元加号操作符实际上没有做任何事情,但当你使用一元减号操作符的时候可以使用它来为提供代码提供对称性。 复合赋值运算符想C一样,Swift也提供把赋值运算符( var a = 1
a += 2
a 现在等于 3
表达式
对了,Swift提供的标准库提供的复合赋值操作符完整列表,详见Swift Standard Library Operators Reference。 比较运算符Swift支持所有标准 C 语言中的比较运算符
每个比较运算符都返回了一个布尔值来标识语句是否为真 1 == 1 //为真,因为1等于1
2 != 1 //为真,因为2不等于1
2 > 1 //为真,因为2大于1
1 < 2 //为真,因为1小于2
1 >= 1 //为真,因为1大于或小于1
2 <= 1 //为假,2并不小于或等于1
比较运算符经常用于条件语句,比如 let name = "world"
if name == "world" {
print("hello,world")
} else {
print("I'm sorry (name),but I don't recognize you")
}
// 输出“hello world”,因为name确实等于“world”
更多短语 (1,"zebra") < (2,"apple") //为真,因为1小于2;“zebra”和“apple”不比较
(3,"apple") < (3,"bird") //为真,因为3等于3;“apple”小于“bird”
(4,"dog") == (4,"dog") //为真,因为4等于4;"dog"等于"dog"
在上面的示例中,第一行左右比较的行为,因为
三元条件运算三元条件运算符的特殊性在于它有三部分操作数,像: if question { answer1 } else { answer2 }
这有一个计算表行高的例子,如果有表头,行高应该高于内容50像素,如果没有表头,高于内容20像素。 let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// 行高等于90
前面的例子要比下面的代码简洁 let contentHeight = 40
let hasHeader = true
let rowHeight: Int
if hasHeader {
rowHeight = contentHeight + 50
} else {
rowHeight = contentHeight + 20
}
// 行高等于90
第一个例子使用了三元条件运算符一行代码就能算出 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |