美文网首页
运算符重载和自定义

运算符重载和自定义

作者: merlinCry | 来源:发表于2018-07-24 11:20 被阅读0次

一重载

类和结构体可以为现有的运算符提供自定义的实现。

注意:这个重载运算符属于类和结构体,所以是static的

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: 3.0, y: 1.0)
let anotherVector = Vector2D(x: 2.0, y: 4.0)
//两个Vectore2D类型的实例可以相加了
let combinedVector = vector + anotherVector
运算符分为三种
1前缀运算符
只有一个参数,运算符放在参数前面使用  如  &a
2中缀运算符
有两个参数,运算符放在中间使用   如 a + b
3后缀运算符
 只有一个参数,运算符放在参数后面使用    如  a!

二自定义

自定义运算符

在swift中还可以根据需要自定义运算符
语法: 新的运算符要使用operator 关键字在全局作用域内进行定义,同时还要指定prefix 、infix 或者postfi
x 修饰符:

prefix operator +++
//然后要使用这个运算符的类型,对其进行重载
extension Vector2D {
    static prefix func +++ (vector: inout Vector2D) -> Vector2D {
        vector += vector
        return vector
    }
}

var toBeDoubled = Vector2D(x: 1.0, y: 4.0)
let afterDoubling = +++toBeDoubled

相关文章

  • 如何为类和结构体自定义运算符实现

    运算符重载 类和结构体可以为现有的运算符提供自定义的实现,称为运算符重载。 一元运算符重载 类与结构体也能提供标准...

  • 为类和结构体自定义运算符实现

    运算符重载 类和结构体可以为现有的运算符提供自定义的视线,称为运算符重载 一元运算符重载 类与结构体也能提供标准一...

  • 运算符重载

    对于内置的数据类,编译器直到如何进行运算 对于自定义数据类型,需要运算符重载 加号运算符重载 左移运算符重载 重载...

  • swift重载或自定义操作符

    重载运算符 在Swift中,类和结构体是可以提供现有运算符的自定义实现,也就是重载现有运算符。三元运算符(a?b:...

  • python 运算符的重载

    什么是运算符重载: 让自定义的类生成的对象(实例)能够使用运算符进行操作 运算符重载的作用: 让自定义的实例像内建...

  • swift - 运算符重载和运算符函数

    让已有的运算符对自定义的类和结构进行运算或者重新定义已有运算符的运算规则,这种机制被称为运算符重载。 1.通过重载...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • C# 第三节

    C# 运算符重载 您可以重定义或重载 C# 中内置的运算符。因此,程序员也可以使用用户自定义类型的运算符。重载运算...

  • 运算符重载和自定义

    一重载 类和结构体可以为现有的运算符提供自定义的实现。 注意:这个重载运算符属于类和结构体,所以是static的 ...

  • c++ 运算符重载

    为了使用系统的运算符对自定义类对象进行操作(如+ -) 运算符重载是将运算符重载为一种特殊的函数,函数名是oper...

网友评论

      本文标题:运算符重载和自定义

      本文链接:https://www.haomeiwen.com/subject/vvhemftx.html