Dart 语言的几个小点

最近在学习 Flutter 开发,接触到了 Dart。发现这个语言其实挺有意思,简直和 Go 要一起成为我比较喜欢的后起之秀了(Swift 和 Kotlin就不是)。

在看别人的代码时候,有几个特有的运算符号会引起困惑,在这儿记录一下。刚刚入门,且不系统,只是自己的理解,看官请勿作为权威解读。

  1. ??。这个运算符是作为 ?: 三元运算符的简便形式存在的,z = x ? x : y 的等价写法为 z = x ?? y。其实我个人认为直接选用 ?: 就最好了,当然双问号也没什么不好,有点双竖线的感觉;
  2. ??=。左值不为假的话,执行赋值操作;
  3. ?.。左侧对象非空的话,引用其成员;
  4. ..。链式引用左侧对象。不知道从什么时候开始,有个本人不太喜欢的写法开始在一部分程序员中间流行开来,就是链式调用,在 Java 里可以这样写 bitmap.loadFrom(Sourcefile).convertTo(BITMAP.png).saveTo(targetFile);当然 C++ 也可以。这种写法比较蛋疼的就是调用链上的各个函数,其返回值都必须是 this。Dart 里在语言层面对此作了支持,把 . 换成 ..即可,勿须注意所调用函数的返回值;可以参考理解为 Pascal 语言里的 with 关键字。之所以要指明 Pascal,是因为 Dart 里有对 with 的不同用法……

在工具类里,我还看到有具名构造函数取名为 _ 的,但是 _ 在 Dart 命名规则里又是表示不暴露(可以理解为约等于 private)的含义,目前尚未有清晰答案。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注