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

iOS: 学习笔记, Swift操作符定义,布布扣,bubuko.com

时间: 2024-10-02 02:25:14

iOS: 学习笔记, Swift操作符定义的相关文章

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

Swift与Objective-C混用简明教程 转载自:https://github.com/lifedim/SwiftCasts/tree/master/000_mix_swift_objc 我想很多iOS开发者在知道Swift后,心中最大的问题就是如何将Swift应用到原有项目之中.下面我将简要介绍这2种语言的混用方法,内容参考自官方文档 Using Swift with Cocoa and Objective-C ,推荐大家阅读. 在Swift中使用Objective-C类 在Xcode6

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

Swift与Objective-C交互总结 在Swift中使用Objective-C(简单) 在创建OjbC文件时, XCode会提示创建XXX-Bridging-Header.h文件, 创建之 在创建的XXX-Bridging-Header.h上导入需要引入到Swift中的Objective-C类 #import "Need.h" 然后在Swfit中就能使用它了 在Ojbective-C中使用Swift(非常简单) 在相应的OjbC文件中加入 #import "XXX-Sw

iOS: 学习笔记, swift扩展

// // YYExtension.swift // // Created by yao_yu on 14-7-18. // Copyright (c) 2014年 yao_yu. All rights reserved. // import Foundation extension String{ func strip() -> String{ return stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineC

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

Swift与C指针交互 Objective-C和C API经常须要使用指针. 在设计上, Swift数据类型能够自然的与基于指针的Cocoa API一起工作, Swift自己主动处理几种经常使用的指针參数. 在本文中, 我们将看到C中的指针參数怎样与Swift中的变量,数组,字符串一起工作. 指针作为输入/输出參数 C和Objective-C不支持多个返回值, 所以Cocoa API常常使用指针传递附加參数到函数. Swift同意把指针參数看成[inout]參数, 所以你能够用相同的&语法传递一

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

在Swift中, 名字空间是用class(extension)嵌套来实现的, 以下用一个简单样例来进行展示 // // main.swift // SwiftNameSpace // // Created by yao_yu on 14-8-1. // Copyright (c) 2014年 yao_yu. All rights reserved. // // Swift名字空间使用实例 // import Foundation //定义顶层名字空间 class YY{ } //在YY名字空间中

iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Type

值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常定义为struct, enum或tuple. 二是"引用类型"(reference types),它是多实例共享一份数据,这种类型通常定义为class. 在本文中,我们将展示值类型和引用类型各自的优点以及如何在二者之间选择. 它们有什么区别? 最基本的区别是 "值类型"

iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Types)

值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常定义为struct, enum或tuple. 二是"引用类型"(reference types),它是多实例共享一份数据,这种类型通常定义为class. 在本文中,我们将展示值类型和引用类型各自的优点以及如何在二者之间选择. 它们有什么区别? 最基本的区别是 "值类型"

ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)

下面是目录其中ios文件夹包括了大部分ios控件的介绍和演示,swift的时完整版,可以学习完swift(这个看的是swift刚出来一周的视频截图,可能有点赶,但是完整),c语言和oc语言的也可以完整的学习完所需知识,,其他文件夹的内容如其名说描述一样 没张图片都有文字说明,可以需要该功能的时候搜索一下然后打开图片就可以学习到 网盘下载地址:需要的话给留言我再传上去 http://www.cnblogs.com/langtianya原创 ios学习笔记图片+图片解释(c语言 oc语言 ios控件

iOS: 学习笔记, 用代码驱动自动布局实例(swift)

iOS自动布局是设置iOS界面的利器.本实例展示了如何使用自动布局语言设置水平布局, 垂直布局1. 创建空白iOS项目(swift)2. 添加一个控制器类, 修改YYAppDelegate.swift文件 @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFi