zoukankan      html  css  js  c++  java
  • iOS: 学习笔记, Swift操作符定义

    Swift操作符能够自行定义, 仅仅须要加上简单的标志符就可以.

    @infix 中置运算. 如+,-,*,/运算

    @prefix 前置运算. 如-

    @postfix 后置运算. a++, a--

    @assignment 赋值运算. +=, -=, --a, ++a

    //
    //  main.swift
    //  SwiftBasic
    //
    //  Created by yao_yu on 14-7-27.
    //  Copyright (c) 2014年 yao_yu. All rights reserved.
    //
    
    import Foundation
    
    struct Vector2D{
        var x = 0.0, y = 0.0
    }
    
    @infix func +(a:Vector2D, b:Vector2D) -> Vector2D{
        return Vector2D(x: a.x + b.x, y: a.y + b.y)
    }
    
    @infix func -(a:Vector2D, b:Vector2D) -> Vector2D{
        return a + -b
    }
    
    @prefix func -(a: Vector2D) -> Vector2D{
        return Vector2D(x: -a.x, y: -a.y)
    }
    
    @assignment func += (inout a: Vector2D, b:Vector2D){
        a = a + b
    }
    
    @prefix @assignment func ++(inout a:Vector2D){
        ++a.x
        ++a.y
    }
    
    @postfix func ++(a: Vector2D) -> Vector2D{
        return a + Vector2D(x: 1, y: 1)
    }
    
    @infix func ==(a:Vector2D, b:Vector2D) -> Bool{
        return (a.x == b.x) && (a.y == b.y)
    }
    
    @infix func !=(a:Vector2D, b:Vector2D) -> Bool{
        return !(a == b)
    }
    
    func Vector2D_Test(){
        var a = Vector2D(x: 1, y: 2), b = Vector2D(x: 3, y: 5)
        var c = a + b
        a += b
        println("((c.x), (c.y))")
        println("((a.x), (a.y))")
        assert(a == c, "a == b失败")
        a += b
        assert(a != c, "a != b失败")
        c = a++
        println("((a.x), (a.y))")
        println("((c.x), (c.y))")
    }
    
    
    Vector2D_Test()


  • 相关阅读:
    洛谷1020导弹拦截
    bzoj2467生成树
    qhfl-2 ContentType组件
    qhfl-1 跨域
    drf8 解析器
    drf7 分页组件
    drf6 权限和频率控制组件
    Flex 布局教程:语法篇
    2017年最新cocoapods安装教程(解决淘宝镜像源无效以及其他源下载慢问题)
    git命令行
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5228789.html
Copyright © 2011-2022 走看看