Swift操作符可以自行定义, 只需要加上简单的标志符即可.

  1. @infix 中置运算. 如+,-,*,/运算
  1. @prefix 前置运算. 如-
  1. @postfix 后置运算. a++, a--
  1. @assignment 赋值运算. +=, -=, --a, ++a
  1. //
  2. // main.swift
  3. // SwiftBasic
  4. //
  5. // Created by yao_yu on 14-7-27.
  6. // Copyright (c) 2014年 yao_yu. All rights reserved.
  7. //
  8.  
  9. import Foundation
  10.  
  11. struct Vector2D{
  12. var x = 0.0, y = 0.0
  13. }
  14.  
  15. @infix func +(a:Vector2D, b:Vector2D) -> Vector2D{
  16. return Vector2D(x: a.x + b.x, y: a.y + b.y)
  17. }
  18.  
  19. @infix func -(a:Vector2D, b:Vector2D) -> Vector2D{
  20. return a + -b
  21. }
  22.  
  23. @prefix func -(a: Vector2D) -> Vector2D{
  24. return Vector2D(x: -a.x, y: -a.y)
  25. }
  26.  
  27. @assignment func += (inout a: Vector2D, b:Vector2D){
  28. a = a + b
  29. }
  30.  
  31. @prefix @assignment func ++(inout a:Vector2D){
  32. ++a.x
  33. ++a.y
  34. }
  35.  
  36. @postfix func ++(a: Vector2D) -> Vector2D{
  37. return a + Vector2D(x: , y: )
  38. }
  39.  
  40. @infix func ==(a:Vector2D, b:Vector2D) -> Bool{
  41. return (a.x == b.x) && (a.y == b.y)
  42. }
  43.  
  44. @infix func !=(a:Vector2D, b:Vector2D) -> Bool{
  45. return !(a == b)
  46. }
  47.  
  48. func Vector2D_Test(){
  49. var a = Vector2D(x: , y: ), b = Vector2D(x: , y: )
  50. var c = a + b
  51. a += b
  52. println("(\(c.x), \(c.y))")
  53. println("(\(a.x), \(a.y))")
  54. assert(a == c, "a == b失败")
  55. a += b
  56. assert(a != c, "a != b失败")
  57. c = a++
  58. println("(\(a.x), \(a.y))")
  59. println("(\(c.x), \(c.y))")
  60. }
  61.  
  62. Vector2D_Test()

iOS: 学习笔记, Swift运算符定义的更多相关文章

  1. iOS: 学习笔记, Swift操作符定义

    Swift操作符能够自行定义, 仅仅须要加上简单的标志符就可以. @infix 中置运算. 如+,-,*,/运算 @prefix 前置运算. 如- @postfix 后置运算. a++, a-- @a ...

  2. iOS: 学习笔记, Swift与Objective-C混用总结

    Swift与Objective-C交互总结 在Swift中使用Objective-C(简单) 在创建OjbC文件时, XCode会提示创建XXX-Bridging-Header.h文件, 创建之 在创 ...

  3. iOS: 学习笔记, Swift与Objective-C混用简明教程(转载)

    Swift与Objective-C混用简明教程 转载自:https://github.com/lifedim/SwiftCasts/tree/master/000_mix_swift_objc 我想很 ...

  4. iOS: 学习笔记, Swift名字空间

    在Swift中, 名字空间是用class(extension)嵌套来实现的, 下面用一个简单例子来进行展示 // // main.swift // SwiftNameSpace // // Creat ...

  5. iOS: 学习笔记, Swift与C指针交互(译)

    Swift与C指针交互 Objective-C和C API经常需要使用指针. 在设计上, Swift数据类型可以自然的与基于指针的Cocoa API一起工作, Swift自动处理几种常用的指针参数. ...

  6. iOS: 学习笔记, swift扩展

    // // YYExtension.swift // // Created by yao_yu on 14-7-18. // Copyright (c) 2014年 yao_yu. All right ...

  7. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  8. iOS学习笔记总结整理

    来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...

  9. iOS学习笔记之Category

    iOS学习笔记之Category 写在前面 Category是类别(也称为类目或范畴),使用Category,程序员可以为任何已有的类添加方法.使用类别可以对框架提供的类(无法获取源码,不能直接修改) ...

随机推荐

  1. 驱动lx4f120h,头文件配置,没有完全吃透,望指点

    来了块开发板,没接触过,希望能驱动起来,就首先试一下驱动LED,没想到刚开始建好工程问题就来了 使用GPIO驱动,首先想到的是关于GPIO的头文件gpio.h,事实上这个还不够,还需要设置一下系统的配 ...

  2. java随机数生成(固定位数)

    随机生成 a 到 b (不包含b)的整数: (int)(Math.random()*(b-a))+a; 随机生成 a 到 b (包含b)的整数: (int)(Math.random()*(b-a+1) ...

  3. 软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程策划篇

    续:软件项目量化管理(CMMI高成熟度)实践经验谈--之概述篇 二.项目管理过程 软件开发项目管理过程,从项目全视角来看,分为售前.售中.售后等三个大的阶段.本文所谈的是售中阶段项目管理过程,在售中阶 ...

  4. Fastjson介绍

    简单介绍 Fastjson是一个Java语言编写的高性能功能完好的JSON库. 高性能 fastjson採用独创的算法,将parse的速度提升到极致,超过全部json库,包含以前号称最快的jackso ...

  5. NVMe 与 AHCI

    http://elf8848.iteye.com/blog/1731274 AHCI: NCQ技术,600MB/S,一个队列,每个队列32个指令 NVME:65000个队列,每个队列65000指令,3 ...

  6. lambda与函数调用的转换

    14.38 编写一个类令其检查某个给定的string对象的长度是否与一个阈值相等.使用该对象编写程序,统计并报告在输入的文件中长度为1的单词有多少个,长度为2的单词有多少个.......长度为10的单 ...

  7. (转载)Eclipse下配置Github环境 .

    总的参考文档:EGit User Guide http://wiki.eclipse.org/EGit/User_Guide Address: http://www.linuxidc.com/Linu ...

  8. NDK开发之数组操作

    JNI把Java数组当作引用类型来处理,JNI提供了必要的函数来访问和处理Java数组. 下面一个一个来看. 1.创建数组 我们可以使用NewArray函数在原生代码中创建数组实例,其中可以是Int. ...

  9. 浮动闭合方案:clearfix

    1 ;clear:both;visibility:hidden} .clearfix{*+height:1%;} 2 .clearfix{overflow:auto;_height:1%} 3 ;}

  10. Hadoop书籍汇总

    <Hadoop实战>陆嘉恒 <Hadoop - The Definitive Guide>Tom White,中文版<Hadoop权威指南> <Hadoop技 ...