美文网首页
Swift1-运算符

Swift1-运算符

作者: iamryanzi | 来源:发表于2018-05-02 10:38 被阅读0次

Swift的运算符与C++和其他语言的运算符大同小异,基础的诸如加减乘除逻辑运算为运算等等一应具全,而且包含了?:运算符也比较惊喜,因为很多新的语言都已经没有?:运算符了,对于一个习惯了C++的人来说?:还是用的比较顺手的。Swift里面还有一些比较高级的运算符很有意思,这里做一个总结。

运算符分三类:单目运算符,双目运算符和三目运算符。

Swift 运算符总结

其中比较有意思的是??, 范围操作符和Overflow运算符。??实际上是一个语法糖,因为Swift中对optional的required的value做了比较严格的区分,估计苹果猜到肯定会有很多unwrap的操作被写在代码里所以提供了一个简便写法。范围操作符和python的..有点类似,其实挺符合阅读习惯挺intuitive的。单边的范围操作符就比较有意思了,不光可以用来对数组做index,还可以直接用来建立一个一边是无限另一边有限的数组。Overflow运算符也进一步体现了Swift是一个很safe的语言,因为将溢出检测直接build进了算数运算符中,所以需要另外提供一组运算符来满足诸如数值转换之类刻意的溢出。C++的老油条们要是知道了肯定会给个不屑脸,从此认为Swift只是给小菜鸟玩的入门语言。抠腚不能时刻自带人脑溢出检测那还算一名合格的程序员吗!

另一个个人觉得非常有用的特性就是运算符的重载和自定义运算符。对于builtin类型运算符的重载由于access control的原因只能以extension中定义static方法来实现。其中在重载单目运算的+和-的时候需要在static后面另外指定prefix关键字。否则Swift会认为你要重载双目的+和-但是操作数个数又不匹配。

自定义运算符就提供了无尽的可能性。自定义一个运算符需要指定这个运算符是prefix,infix或是postfix。对于infix需要指定这个运算符属于哪一个优先级类别。Swift中定义了以下优先级类别:

AdditionPrecedence

RangeFormationPrecedence

CastingPrecedence

NilCoalescingPrecedence

ComparisonPrecedence

LogicalConjunctionPrecedence

LogicalDisjunctionPrecedence

TernaryPrecedence

AssignmentPrecedence

BitwiseShiftPrecedence

MultiplicationPrecedence

运算符的重载和自定义为创建大量自定义类型的工程提供了非常大的便利,使得代码可读性大大提高。

相关文章

  • Swift1-运算符

    Swift的运算符与C++和其他语言的运算符大同小异,基础的诸如加减乘除逻辑运算为运算等等一应具全,而且包含了?:...

  • python常用运算符的使用

    python七类运算符 算术运算符比较运算符逻辑运算符赋值运算符成员运算符身份运算符位运算符 赋值运算符 运算符描...

  • 运算符与字符串

    运算符 算数运算符、比较运算符、赋值运算符、逻辑运算符比较运算符:>、<、>=、<=、==、!=赋值运算符:=、+...

  • 4. Python运算符

    算数运算符 加法运算符: + 减法运算符: - 乘法运算符: * 除法运算符: / 幂运算符: ** 整除运算符:...

  • Golang——运算符和格式化输出

    运算符 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其他运算符 算术运算符 + 相加- 相减* ...

  • Go语言基础之运算符

    运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 运算符描...

  • 2018年6月13日【Python学习笔记】

    一、运算符 运算符:算数运算符、比较运算符、赋值运算符、逻辑运算符 1.比较运算符:>、<、>=、<=、==、!=...

  • 第二节: 运算符

    算术运算符: 赋值运算符: 比较运算符: Python位运算符 逻辑运算符: 成员运算符: 身份运算符:

  • Java基础学习二 运算符

    运算符 1,运算符-算术运算符(++、--) 代码示例: 2,运算符-关系运算符 运算符号解析运算符号解析>大于<...

  • Python运算符、格式化输出、条件语句、循环语句、列表、元组

    运算符包括:算术运算符、比较运算符、赋值运算符、逻辑运算符、成员运算符、身份运算符 算术运算符 % 取模(余数...

网友评论

      本文标题:Swift1-运算符

      本文链接:https://www.haomeiwen.com/subject/fyrxrftx.html