- Swift从入门到精通 (移动开发丛书)
- 张益珲
- 596字
- 2020-11-28 18:05:18
6.3 运算符的优先级与结合性
在小时候学习数学时,老师总会强调四则运算中的先乘除后加减、从左向右计算等规则。其实在Swift语言编程中,也有这样的规则存在。例如,进行如下混合运算:
/* 运算结果23 过程如下: 2*10 = 20 20*3 = 60 60/4 = 15 8+15 = 23 */ 8+2*10*3/4
从上面演示代码中可以看出,Swift语言中的四则运算也是先进行乘除运算后进行加减运算,运算顺序为从左向右。其实在Swift语言的运算符体系中,有着优先级与结合性的概念,运算符的优先级决定同一行代码中出现多种运算符时的计算顺序,运算符的结合性决定运算符是从左向右运算还是从右向左运算。任何运算符都有默认的优先级,开发者自定义的运算符也是如此,优先级越高的运算符优先执行。对于结合性而言,由于前缀运算符与后缀运算符都只有一个操作数,因此它只对中缀运算符有意义。
表6-1和表6-2列出了Swift中所有运算符的相关信息:
表6-1 Swift语言中的系统前缀运算符
表6-2 Swift语言中的系统中缀运算符
(续表)
上面两个表格中列举了Swift语言系统定义的所有运算符相关信息,无需专门记忆,在实际开发中需要使用时再来查表即可。其实更多情况下,开发者会直接使用小括号来决定表达式的执行顺序,这样代码也会更加直观。
在重载运算符操作时,并不会改变原运算符的结合性和优先级,但对于自定义运算符,开发者可以设置其结合性与优先级,示例如下:
infix operator ++{associativity left precedence 140}
associativity关键字用于声明运算符的结合性,可以选择left或者right来定义成左结合性或者右结合性,precedence关键字用于声明运算符的优先级。