码迷,mamicode.com
首页 > 其他好文 > 详细

swift 笔记 (二十一) —— 高级运算符

时间:2014-06-22 18:00:23      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ext   color   com   

高级运算符

位运算符

按位取反: ~
按位与运算:  &
按位或运算:  |
按位异或运算:  ^
按位左移运算: <<
按位右移动算: >>

溢出运算符
自从swift里面提供了所谓的类型安全之后,我们就不能再用一个 Int.max 进行+1操作了,这样会导致报错。所以swift又提供了一个让我们在知道这会溢出的前提下,继续+1的溢出运算符,这听上去也不错。

溢出加法 &+
溢出减法 &-
溢出乘法 &*
溢出除法 &/
溢出取余 &%

有趣的是,我们知道非常多的语言中,如果一个数被0除的话,会产生错误,而在swift中,溢出除法 &/ 被0除的话,就不会产生错误,而是会得到0值:

var a = Int.max &/ 0    //不会报错,则是a被赋值为0
var b = Int.max   0    // 报错,因为/不能溢出操作

优先级
尽管文档上还是描述了优先级,但我觉得一个正常人类是不会使用这么不常用的规则去写一个让另一个正常人类不那么容易看懂的表达式的,所以可以忽略掉这里的优先级介绍,直接使用()来表明优先级。

运算符重载
swift里依然提供了运算符重载。。。。。不提供才可笑。。

但是,中置,前置,后置运算符的定义竟然不一样。。。。

中置: @infix
bubuko.com,布布扣
bubuko.com,布布扣
中置运算符还包括 == , != 等等 

前置: @prefix
@prefix func +(num:Int) -> Int{
    
return num + 5
}

var a = 3
println(+a)     //结果是8

后置: @postfix
与前置差不多,就不写了。

组合赋值运算符: @assignment
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
自定义运算符

operator prefix +++ { }  //定义了一个前置运算符 +++, 注意定义运算符的关键字 operator

@prefix @assignment func +++ (inout num:Int) {
    num += 
10
}

var a = 1
+++a
println(a)     //得到结果是11


自定义中置运算符的结合性和优先级
bubuko.com,布布扣
bubuko.com,布布扣
operator表示定义一个新的运算符,infix表示是中置运算符,运算符写作 +-, associativity 表示结合性,与后面的left一起表示为左结合, precedence表示优先级,与后面的数字一起表示优先级为140 (默认值为100)

写在最后:别把运算符玩坏了!!!!

swift 笔记 (二十一) —— 高级运算符,布布扣,bubuko.com

swift 笔记 (二十一) —— 高级运算符

标签:style   blog   http   ext   color   com   

原文地址:http://blog.csdn.net/supergerm/article/details/32729605

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!