dart 系列之:dart 语言中的特殊操作符
简介
有运算就有操作符,dart 中除了普通的算术运算的操作符之外,还有自定义的非常特殊的操作符,今天带大家一起来探索一下 dart 中的特殊操作符。
普通操作符
普通操作符就很好解释了,就是加减乘除,逻辑运算符,比较运算符和位运算符等。
这些操作符和其他语言的操作符没什么差别,这里就不详细介绍了。大家看几个普通操作符的例子:
类型测试操作符
dart 中的类型测试符类似 JAVA 中的 instance of 操作,主要有三个,分别是 as,is 和 is!
其中 is 是类型判断操作符,而 as 是类型转换操作符,也就是常说的强制转换。
对下面的语句来说,如果 obj 是 T 的子类或者实现了 T 的接口,那么就会返回 true。
而下面的语句则会始终返回 true:
dart 中的 as 操作符表示的是类型转换,转换类型之后就可以使用对应类型中的方法了。如下所示:
那么问题来了,上面的写法和下面的写法有什么区别吗?
第一种写法中,如果 student 是空,或者不是 Student 的实例,则会报错,而第二种并不会。
条件运算符
dart 中也支持条件运算符,最常见的就是三元运算符:
表示如果 condition 是 true,则返回 expr1, 否则返回 expr2。
我们在日常的工作中,经常会有一些判空操作,dart 为我们提供了非常简便的判空操作符:
上式表示如果 expr1 为空,则选择 expr2。举个例子:
级联符号
级联符号是 .. 或者?.. , 用来在同一对象上进行序列操作,级联操作可以让我们少写很多代码,可以在创建一个对象的同时,给对象赋值:
上面的代码等同于:
如果对象可能为空,则可以在第一个级联操作符之前加上?,这样如果对象为空的话,后续的级联操作都不会进行,如下所示:
类中的自定义操作符
在 dart 中可以实现类似 C++那种操作符的重写功能。可以实现对象之间的加减乘除之类的运算。
比如下面的类中,我们自定义了类之间的加法和减法运算:
自定义操作符是用 operator 关键字来修饰的,非常的方便。
总结
以上就是 dart 中的操作符的介绍和使用。
本文已收录于 http://www.flydean.com/04-dart-operator/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
版权声明: 本文为 InfoQ 作者【程序那些事】的原创文章。
原文链接:【http://xie.infoq.cn/article/4afaf8fa5f0052335b8f217b5】。文章转载请联系作者。
评论