dart学习笔记
类型检测操作符
| 运算符 | 含义 |
|---|---|
| as | 定型 |
| is | 如果对象具有指定的类型,则为 True |
| is! | 如果对象具有指定的类型,则为 False |
使用 as 操作符将对象转换为特定类型。通常,您应该使用它作为在对象上进行 is 测试的简写,后面是使用该对象的表达式。例如,考虑以下代码:
1 | if (eat is Person) { |
您可以使用 as 运算符使代码更短:
1 | (eat as Person).food = 'apple'; |
注意:以上代码不相等。如果 eat 为空或不为 Person,第一个示例(带 is)什么也不做;第二个(带有 as)抛出异常。
赋值操作符
正如您已经看到的,可以使用=操作符赋值。如果指定的变量为空,则使用??=运算符。
1 | // 赋值给a |
级联符号(..)
级联(..)允许对同一对象进行一系列操作。除了函数调用外,您还可以访问同一对象上的字段。这通常可以省去创建临时变量的步骤,并允许您编写更流畅的代码。
考虑以下代码:
1 | querySelector('#confirm') // Get an object. |
第一个方法调用 querySelector()返回选择器对象。级联表示法后面的代码操作这个选择器对象,忽略可能返回的任何后续值。上例等价于:
1 | var button = querySelector('#confirm'); |
你也可以嵌套你的级联。例如:
1 | final addressBook = (AddressBookBuilder() |
要小心在返回实际对象的函数上构造级联。例如,以下代码失败:
1 | var sb = StringBuffer(); |
调用 sb.write()返回 void,并且不能在 void 上构造级联。
注意:严格地说,级联的“双点”符号不是运算符。这只是 Dart 语法的一部分。