Dart 运算符:名称 'b' 不是类型,不能在 'is' 表达式中使用

Dart Operators : The name 'b' isn't a type and can't be used in an 'is' expression

我是 dart 的新手,正在阅读 dart operators。在 Eric Windmill fluter in Action 的书中 (第 2 章,2.24,第 34 页)作者说:

is and is! verify that two objects are of the same type. They are equivalent to == and !=.

尝试按照下面的代码实现这一点

void main() {
    int a = 7;
    int b = 2;
    bool z = a == b; // It works when I use the equals symbol
    print('Result: $z');
}

但是当我使用 ```is`` 关键字时,出现错误

void main() {
    int a = 7;
    int b = 2;
    bool z = a is b; // It doesn't work here
    print('Result: $z');
}

错误

The name 'b' isn't a type and can't be used in an 'is' expression.
Try correcting the name to match an existing type.

不确定该语句的上下文是什么,但 isis!==!= 不同,因为它们的作用相同.我猜想要解释的是 is 的反义词是 is! 就像 == 的反义词是 !=.

== 用于检查两个对象是否相等(基于左侧的对象定义为相等)。因此,对于 int 我们 return true 当使用 == 时,如果两个数字具有相同的数值。

is 运算符用于测试给定对象是否实现给定接口。一个例子:

void main() {
  Object myList = <int>[];
  
  if (myList is List<int>) {
    print('We have a list of numbers.');
  }
}

您得到的错误告诉您,要使用 is,您需要在 is 的右侧提供实际类型,而不是对象实例。