学习Swift第二篇

今天看了swift的基本运算符,现在回忆记录一下刚才看到了的内容

1.赋值运算符=
2.算术运算符+-*/
3.求余运算符%(可以用于浮点数)
4.空合运算符(??),用于可选类型的判断和取值
例如:空合运算符(a ?? b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b.这个运算符有两个条件:
表达式a必须是Optional类型
默认值b的类型必须要和a存储值的类型保持一致
5.区间运算符 1...5表示的是,从1到5所有的整数1..<5表示从1到4的整数(半开区间)
6.逻辑运算符可以组合使用
注意: Swift 逻辑操作符&&和||是左结合的,这意味着拥有多元逻辑操作符的复合表达式优先计算最左边的子表达式。

swift的益出运算符是在运算符的前面加上&
溢出加法&+
溢出减法&-
溢出乘法&*

运算符函数:类和结构体可以为现有的运算符提供自定义的实现,这通常被称为运算符重载

struct Vector2D {
var x = 0.0, y = 0.0
}
func + (left: Vector2D, right: Vector2D) -> Vector2D {
return Vector2D(x: left.x + right.x, y: left.y + right.y)
}
let vector = Vector2D(x: 3.0, y: 1.0)
let anotherVector = Vector2D(x: 2.0, y: 4.0)
let combinedVector = vector + anotherVector
// combinedVector 是一个新的 Vector2D 实例,值为 (5.0, 5.0)

自定义运算符

除了实现标准运算符,在 Swift 中还可以声明和实现自定义运算符。可以用来自定义运算符的字符列表请参考运算符。
新的运算符要使用 operator
关键字在全局作用域内进行定义,同时还要指定 prefix、infix或者 postfix修饰符:

prefix operator +++ {}

上面的代码定义了一个新的名为 +++ 的前缀运算符。对于这个运算符,在 Swift 中并没有意义,因此我们针对Vector2D的实例来定义它的意义。对这个示例来讲,+++被实现为“前缀双自增”运算符。它使用了前面定义的复合加法运算符来让矩阵对自身进行相加,从而让 Vector2D
实例的 x属性和 y属性的值翻倍:

var toBeDoubled = Vector2D(x: 1.0, y: 4.0)
let afterDoubling = +++toBeDoubled
// toBeDoubled 现在的值为 (2.0, 8.0)
// afterDoubling 现在的值也为 (2.0, 8.0)

你可能感兴趣的:(学习Swift第二篇)