1、…和..<
2、??
3、自定义操作符
1、…和..<
- Range操作符
0…3:全闭合的范围操作,从0开始到3为止,包括3
0..<3:从0开始到3为止,不包括3 - 对于这样得到的数字范围,我们可以对它进行for...in的访问
- 我们还可以通过...和..<来连接两个字符串。一个常见的使用场景就是检查某个字符是否是合法的字符。比如像确认一个单词里的全部字符都是小写英文字母("a"…"z"),或者确定某一个字符是不是有效的ASCII字符(\0...~)等等
2、??
- ?? :左值如果为非nil的optional值,结果就为左值,否则就为右值
3、自定义操作符
- Swift支持操作符重载,包括系统已经定义了的+、-、*等,也可以自己定义新的操作符,自己定义新的操作符比重载系统已经定义的操作符要麻烦一些。
infix operator +* {
associativity none
precedence 160
}
- infix:表示要定义的是一个中位操作符,即前后都是输入,向??就是一个中位操作符;其他的修饰子还包括prefix和postfix。
- associativity:定义了结合律,即如果多个同类的操作符顺序出现的计算顺序。比如常见的加法和减法都是left,就是说多个加法同时出现时按照从左往右的顺序计算(因为加法满足交换律,所以这个顺序无所谓,但是减法的话计算顺序就很重要了)。点乘的结果是一个Double,不在会和其他点乘结合使用,所以这里写成none
- precedence:运算的优先级,越高的话越优先进行运算。Swift中乘法和除法的优先级是150,加法和减法是140,这里我们定义点积优先级160,就是说应该早于普通的乘除进行运算。
网友评论