Dart 函数的 return 对象不相等

Dart function's return Objects not Equal

我是 flutter 和 Dart 语言的新手。有人可以向我解释为什么 geek1==geek2 在原则上应该为真时为假。 function gfg() returns 每次都是相同的值 那么为什么 geek1 和 geek2 不相等?

gfg() => [1, 2];     
// Main function
void main() {
  // Assiging value
  // through function
  var geek1 = gfg();
  var geek2 = gfg();
   
  // Printing result
  // false
  print(geek1 == geek2);
  print(geek1);
  print(geek2);
}

因为 gfg 是一个函数,它 returns 一个新数组 在每次调用时

您正在将它们与 == 进行比较,后者是进行身份比较的运算符,而不是值比较 (a.k.a. 相等)。由于实例总是不同的,因此它们永远不会相同。

对象相等性在 Dart 中通过引用求值 - 基本上,您正在创建两个不同的对象,它们存储在两个不同的内存地址。当 Dart 运行时比较对象时,它默认比较它们的内存地址,而不是它们的内容。

要比较两个 List 对象的内容,您可以使用 listEquals 函数。

一些额外信息:

要比较 类 是否相等,you can override the equality operator, or you can use the Equatable 包。