Swift学习(一):自定义运算符 operator
自定义运算符仅能包含这些字符:
/ = - + * % < >!& | ^。~
运算符位置:
前置运算符 prefix
中间运算符 infix
后置运算符 postfix
运算符其他配置
结合性 associativity
可取值范围 left,right和none 优先级 precedence
可取值范围 ~ 系统内置运算符结合性质及优先级
求幂相关(无结合,优先级160)
<< 按位左移(Bitwise left shift)
>> 按位右移(Bitwise right shift) 乘除法相关(左结合,优先级150)
* 乘
/ 除
% 求余
&* 乘法,忽略溢出( Multiply, ignoring overflow)
&/ 除法,忽略溢出(Divide, ignoring overflow)
&% 求余, 忽略溢出( Remainder, ignoring overflow)
& 位与( Bitwise AND) 加减法相关(左结合, 优先级140)
+ 加
- 减
&+ Add with overflow
&- Subtract with overflow
| 按位或(Bitwise OR )
^ 按位异或(Bitwise XOR) Range (无结合,优先级 )
.. 半闭值域 Half-closed range
... 全闭值域 Closed range 类型转换 (无结合,优先级 )
is 类型检查( type check)
as 类型转换( type cast)
<= 小于等于
>大于
>= 大于等于
== 等于
!= 不等
=== 恒等于
!== 不恒等
~= 模式匹配( Pattern match) 合取( Conjunctive) (左结合,优先级 )
&& 逻辑与(Logical AND) 析取(Disjunctive) (左结合,优先级 )
|| 逻辑或( Logical OR) 三元条件(Ternary Conditional )(右结合,优先级 )
?: 三元条件 Ternary conditional 赋值 (Assignment) (右结合, 优先级 )
= 赋值(Assign)
*= Multiply and assign
/= Divide and assign
%= Remainder and assign
+= Add and assign
-= Subtract and assign
<<= Left bit shift and assign
= Right bit shift and assign
&= Bitwise AND and assign
^= Bitwise XOR and assign
|= Bitwise OR and assign
&&= Logical AND and assign
||= Logical OR and assign
范例
// 前置:返回2的n次方
prefix operator ^ {} prefix func ^ (var vector: Double) -> Double {
return pow(, vector)
} println(^) // 32.0 // 后置:返回2次方
postfix operator ^ {} postfix func ^ (var vector: Int) -> Int {
return vector * vector
} println(^) // 25 //中间:计算N的M次方,左结合,优先级为255
infix operator ^^ {associativity left precedence } func ^^(left: Double, right: Double) -> Double {
return pow(left, right)
} println( ^^ - ^^ ) // 1024 - 8 = 1016
Swift学习(一):自定义运算符 operator的更多相关文章
- Swift 学习- 03 -- 基本运算符
// 运算符是检查,改变,合并值的特殊符号或短语, // swift 支持大部分标准的 C语言的运算符, 且改进许多特性来减少常规编码错误. /* 如: 赋值符 (=) 不返回值, 以防止把想要判断相 ...
- swift学习:自定义Log
import UIKit /* 总结:1:let file = (#file as NSString).lastPathComponent,#file获取的是打印所在的文件 的全路径,转成NSStri ...
- swift学习笔记之-高级运算符
//高级运算符 import UIKit /*高级运算符(Advanced Operators):位运算符.溢出运算符.优先级和结合性.运算符函数.自定义运算符 位运算符: 1.位运算符可以操作数据结 ...
- swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift 学习(一)基础知识 (基本数据类型,操作符,流控制,集合)
xcode 中调用API帮助 1.查看简单信息,选中后 按键 control +左键单击 或者按 右侧属性栏 里的帮助按钮 2.完整API,选中后 按键 control +左键双击 3.查看类.函数 ...
- Swift 学习笔记(五)
126. 协议(Protocols) 协议语法(Protocol Syntax) 属性要求(Property Requirements) 方法要求(Method Requirements) Mutat ...
- iOS ---Swift学习与复习
swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...
- Swift学习目录
本学习基于苹果官方Swift学习材料,保留了原版90%左右的内容(一些项目开发中基本不用的知识点没有整理),并根据理解进行整理.如对原版感兴趣,可以直接单击链接阅读和学习. 第一部分 基础篇 1.基本 ...
- Swift学习与复习
swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...
随机推荐
- 工厂方法(Factory Method),思考
最近看见一个关于如何通过工厂方法来重构代码的提问,发现这方面,自己还没有想得特别明白,所以,稍作总结. 只要有构造的地方,就有是用工厂方法的可能. 如果考虑到单元测试和实现的扩展,就有是用工厂方法的必 ...
- 带节日和农历的js日历
带农历的脚本: http://keleyi.com/keleyi/phtml/jstexiao/11.htm http://keleyi.com/tools/rili/ <html> &l ...
- 兼容 IE input button 左右内边距的增加
IE 下的按钮标签(input.button)会随着文字的增加导致文本左右两侧的间距越来越大.该问题存在于 IE6/IE7,IE8~IE10 没发现类似问题.一般情况下,只要给按钮标签设置 overf ...
- Aspose.Words基本操作
一个非常好用的控件. 基本的操作可以参考伍大神的文章: http://www.cnblogs.com/wuhuacong/archive/2012/08/30/2662961.html 在这里补充四点 ...
- ListDefinition Tips
1)ListTemplate.Type位数不能太长(最长7位),否则启用内容类型后,列表设置中会抛异常. <ListTemplate Name="List1" Type=&q ...
- iOS开发-UI 从入门到精通(五)
近日在做项目的时候,为了快捷适配屏幕采用了Storyboard,添加约束以后运行后发现一个问题(下面将以普通案例展示该问题);在4.7 甚至更大的屏幕下是没有问题的,如下图(4.7屏幕): 但是放到更 ...
- sqlserver下调试sql语句
现在版本的sqlServer已经支持调试功能了,但是在使用的时候用到的却很少(毕竟print习惯了..) 这里做一个笔记,简单的说明一下在sqlserver下调试的方法: declare @i int ...
- ViewStub源码分析
ViewStub是一种特殊的View,Android官方给出的解释是:一种不可见的(GONE).size是0的占位view,多用于运行时 延迟加载的,也就是说真正需要某个view的时候.在实际项目中, ...
- Request 和 Response 原理
* Request 和 Response 原理: * request对象和response对象由服务器创建,我们只需要在service方法中使用这两个对象即可 * 继承体系结构: ...
- swift实现饭否应用客户端源码
swift 版 iOS 饭否客户端 源码下载:http://code.662p.com/view/13318.html 饭否是中国大陆地区第一家提供微博服务的网站,被称为中国版Twitter.用户可通 ...