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: , y: )
} @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: , y: ), b = Vector2D(x: , y: )
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()

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. C# 的异步

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  2. 介绍几种大型的Oracle/SQL Server数据库免费版

    我们知道,Oracle和SQL Server等大型数据库也都存在一些免费的版本,这些免费的版本已经能够满足许多中小项目的需求.对于在校大学生来说,从学习的目标上来讲,安装免费版的大型数据库也就足够用了 ...

  3. oracle强化练习之分组函数

    1.      显示平均工资为>2000的职位 select job,avg(sal) from emp group by job having avg(sal)>2500; 2.     ...

  4. 偷偷mark下一个

    java书单 thinking in java java战 Effective Java 深入了解JVM虚拟机 java性能优化权威指南 JSR133 Google Guava官方教程 版权声明:本文 ...

  5. 基于 CoreText 实现的高性能 UITableView

    引起UITableView卡顿比较常见的原因有cell的层级过多.cell中有触发离屏渲染的代码(譬如:cornerRadius.maskToBounds 同时使用).像素是否对齐.是否使用UITab ...

  6. hdu2025java字符题

    查找最大元素 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  7. 过滤器(filter)实现用户登录拦截

    过滤器(filter)实现用户登录拦截 >>>>>>>>>>>>>>>>>>>> ...

  8. 11.10 noip模拟试题

    1.第K小数 (number.cpp/c/pas) [问题描述] 有两个正整数数列,元素个数分别为N和M.从两个数列中分别任取一个数 相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少 ...

  9. Spring 注解回顾

    [copy] 参考资料 赵蒙

  10. HDU-1020(水题)

    Encoding Problem Description Given a string containing only 'A' - 'Z', we could encode it using the ...