第二十五章 高级运算符

swift运算符和c++相同点

swift的位运算符和c的意义一样。

~按位取反

&按位与

|按位或

^按位异或

<<按位左移

>>按位右移

swift的运算符优先级也和c一样。

swift运算符和c++的不同点

swift没有++,--单目运算符,swift增加了c++没有的===、!==等价运算符,区间运算符...,闭合运算符??;此外,swift的算术运算符,默认情况,不会溢出,如果溢出将会在编译阶段报错。

    swift算术运算不会溢出,但增加了溢出运算符

&+溢出加法

&-溢出减法

&*溢出乘法

c++运算符重载使用关键子operator来标示,swift没有特别的关键字。

struct Vector2D {

    var x = 0.0,y = 0.0

}

extension Vector2D {

    static func + (left: Vector2D, right: Vector2D) -> Vector2D {

        return Vector2D(x: left.x + right.x, y: left.y + right.y)

    }

}

let vector = Vector2D(x: 2.0, y: 3.0)

let anotherVector = Vector2D(x: 1.0, y: 0.0)

print(vector + anotherVector)

extension Vector2D {

    static prefix func - (vector: Vector2D) -> Vector2D {

        return Vector2D(x: -vector.x, y: -vector.y)

    }

}

extension Vector2D {

    static func == (left: Vector2D, right: Vector2D) -> Bool {

        return (left.x == right.x) && (left.y == right.y)

    }

    static func != (left: Vector2D, right: Vector2D) -> Bool {

        return !(left == right)

    }

}

extension Vector2D {

    static func += (left: inout Vector2D, right: Vector2D) {

        left = left + right

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、概述 除了一些基本的操作符,Swift提供了几种能够执行更加复杂值操纵的高级操作符。其中包括你所熟悉的C和OC...
    本人莫等阅读 3,914评论 0 0
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 9,234评论 0 6
  • 高级运算符(Advanced Operators) 本文参考自苹果官方文档Advanced Operators本页...
    果啤阅读 5,505评论 1 5
  • 其实爱情很美,只是她的父母不希望她再碰爱情了。——题记 她还记得每当她写一些否定爱情的文章时,她的母亲会露出满意的...
    昨夜的街灯阅读 1,131评论 0 2
  • “我有一段情呀,唱给诸公听 诸公各位,静呀静静心呀 让我来唱一支秦淮景呀 ……” 十里秦淮河畔,烟花之地,这里是金...
    半世离阅读 5,252评论 10 11