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 ...
随机推荐
- 偷偷发请求的ajax
概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...
- centos 更换软件源
最近都在使用国内的VPS.系统统一使用的都是Linux系统.但是,有一些服务商的系统给默认设置的是国外的.这样就会导致下载速度缓慢.于是,找到了国内几家比较热门的镜像点.奉献给大家.下面的镜像全部支持 ...
- 修改ArcSDE的最大连接数
我们大体都知道ArcSDE的连接数有 48 的限制,很多人也知道这个参数可以修改,并且每种操作系统能支持的最大连接数是不同的. 如果应用报错:超出系统最大连接数该如何处理? 两种解决办法: 第一,首先 ...
- 从头开始构建LINUX[内核更新和资料]
了解了LFS的内容后,至于内核的更新就一目了然了 http://www.cnblogs.com/2018/p/3979305.html http://www.cnblogs.com/2018/p/39 ...
- Android—9.png的制作和去除黑线
在开发中为了避免图片因为拉伸而失真我们会把背景图片设置为9.png图片,这篇博客介绍的是如何将图片设置为9.png的 1.首先在android—>sdk—>tools文件夹中打开下图所示文 ...
- ViewPager+GridView实现横向滑动 仿大众点评
先看演示效果: 1 ViewPager类提供了多界面切换的新效果. 新效果有如下特征: [1] 当前显示一组界面中的其中一个界面. [2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界 ...
- Android UI ListView的使用
一.ListView的理解 1.什么ListView? 一种用来显示多个可滑动项(Item)列表的的ViewGroup 需要使用Adapter将集合数据和每一个Item所对应的布局动态适配到Li ...
- Github+hexo绑定域名
Github绑定域名 近期在新网购买了一个属于自己的域名,因此想着把自己用hexo+github搭建的博客通过域名访问,但是找了n长时间来搞,都没有成功.心灰意冷之中再次通过google来搜索,终于有 ...
- python之(re)正则表达式下
知识储备: \w 匹配任何字母/数字,下划线 正则表达式进阶: re.match('com', 'comwww.runcomoob') re.search('\dcom', 'www.4comruno ...
- JavaScript语言精粹(读书笔记)
第一章 精华 1,JavaScript的函数(主要)基于词法作用域(lexical scoping)的顶级对象.强类型语言允许编译器在编译时检测错误,但弱类型很自由,无需建立复杂的类层次,不用做强制造 ...