最近在学习 Flutter 开发,接触到了 Dart。发现这个语言其实挺有意思,简直和 Go 要一起成为我比较喜欢的后起之秀了(Swift 和 Kotlin就不是)。
在看别人的代码时候,有几个特有的运算符号会引起困惑,在这儿记录一下。刚刚入门,且不系统,只是自己的理解,看官请勿作为权威解读。
??
。这个运算符是作为?:
三元运算符的简便形式存在的,z = x ? x : y
的等价写法为z = x ?? y
。其实我个人认为直接选用?:
就最好了,当然双问号也没什么不好,有点双竖线的感觉;??=
。左值不为假的话,执行赋值操作;?.
。左侧对象非空的话,引用其成员;..
。链式引用左侧对象。不知道从什么时候开始,有个本人不太喜欢的写法开始在一部分程序员中间流行开来,就是链式调用,在 Java 里可以这样写bitmap.loadFrom(Sourcefile).convertTo(BITMAP.png).saveTo(targetFile)
;当然 C++ 也可以。这种写法比较蛋疼的就是调用链上的各个函数,其返回值都必须是this
。Dart 里在语言层面对此作了支持,把.
换成..
即可,勿须注意所调用函数的返回值;可以参考理解为 Pascal 语言里的with
关键字。之所以要指明 Pascal,是因为 Dart 里有对with
的不同用法……
在工具类里,我还看到有具名构造函数取名为 _
的,但是 _
在 Dart 命名规则里又是表示不暴露(可以理解为约等于 private)的含义,目前尚未有清晰答案。