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操作符定义的更多相关文章
- iOS: 学习笔记, Swift运算符定义
Swift操作符可以自行定义, 只需要加上简单的标志符即可. @infix 中置运算. 如+,-,*,/运算 @prefix 前置运算. 如- @postfix 后置运算. a++, a-- @ass ...
- iOS: 学习笔记, Swift与Objective-C混用总结
Swift与Objective-C交互总结 在Swift中使用Objective-C(简单) 在创建OjbC文件时, XCode会提示创建XXX-Bridging-Header.h文件, 创建之 在创 ...
- iOS: 学习笔记, Swift与Objective-C混用简明教程(转载)
Swift与Objective-C混用简明教程 转载自:https://github.com/lifedim/SwiftCasts/tree/master/000_mix_swift_objc 我想很 ...
- iOS: 学习笔记, Swift名字空间
在Swift中, 名字空间是用class(extension)嵌套来实现的, 下面用一个简单例子来进行展示 // // main.swift // SwiftNameSpace // // Creat ...
- iOS: 学习笔记, Swift与C指针交互(译)
Swift与C指针交互 Objective-C和C API经常需要使用指针. 在设计上, Swift数据类型可以自然的与基于指针的Cocoa API一起工作, Swift自动处理几种常用的指针参数. ...
- iOS: 学习笔记, swift扩展
// // YYExtension.swift // // Created by yao_yu on 14-7-18. // Copyright (c) 2014年 yao_yu. All right ...
- iOS学习笔记-精华整理
iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...
- iOS学习笔记总结整理
来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...
- iOS学习笔记之Category
iOS学习笔记之Category 写在前面 Category是类别(也称为类目或范畴),使用Category,程序员可以为任何已有的类添加方法.使用类别可以对框架提供的类(无法获取源码,不能直接修改) ...
随机推荐
- [ TJOI 2010 ] 打扫房间
\(\\\) Description 给出一个\(N\times M\) 的网格,一些格子是污点,求是否能用多个封闭的环路覆盖所有不是污点的格点. 封闭的环路覆盖的含义是,每条路径都必须是一个环,且每 ...
- Java获取一个文件夹内的所有文件(包括所有子文件夹内的)
输入文件数组.文件夹路径 返回的文件在输入的文件数组中 private void getFiles(ArrayList<File> fileList, String path) { Fil ...
- vs2017 visual studio2017 密钥 激活码
企业版Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF 专业版Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH
- dapper未将对象引用设置到对象的实例
现象是这样的dapper在reader.Read<T>()方法时报:未将对象引用设置到对象的实例 解决:实体类里属性类型与数据库表字段类型不匹配 我用的mysql varchar(50)保 ...
- Application crashes -程序崩溃原因
Typical errors that result in application crashes include: attempting to read or write memory that i ...
- jQuery,遍历表格每个单元格数据。
<table class="table table-hover table-bordered"> <thead> <tr> <th > ...
- GetArxPath
extern HINSTANCE _hdllInstance;CString GetArxPath(){ CString strArxPath; GetModuleFileName(_hdllInst ...
- 解决docker容器启动时候无法映射端口的问题
当我们停止防火墙后,docker容器启动映射端口可能无法映射端口,这个时候需要重建docker0网桥. 详细的错误是这样的: docker: Error response from daemon: d ...
- Python orm基础
ORM 对象映射关系程序. 通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sq ...
- 洛谷——P1404 平均数
P1404 平均数 题目描述 给一个长度为n的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度>=m. 前缀和+二分答案 #include<iostream> ...