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()


  • 相关阅读:
    数据结构与算法
    android vitamio的坑
    Fragment的坑
    scrollview里面嵌套listview的坑
    关于微信小程序的tabbar
    Intent初级学习
    HDU 4562 守护雅典娜
    SGU 542 Gena vs Petya
    [二] EditText and Button
    A Data Structure for Dynamic Trees
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5228789.html
Copyright © 2011-2022 走看看