Dart:为什么创建的实例不同,但它们访问的变量不同?
正如您所看到的Dart:为什么创建的实例不同,但它们访问的变量不同?,dart,Dart,正如您所看到的animal1和animal2是两个不同的实例,但是为什么animal1.age和animal2.age是相同的呢?Dart不创建这些变量的单独副本吗 class Animal { int age = 10; Animal(); Animal.named(); } void main() { var animal1 = Animal(); var animal2 = Animal.named(); print("${identical(animal
animal1
和animal2
是两个不同的实例,但是为什么animal1.age
和animal2.age
是相同的呢?Dart不创建这些变量的单独副本吗
class Animal {
int age = 10;
Animal();
Animal.named();
}
void main() {
var animal1 = Animal();
var animal2 = Animal.named();
print("${identical(animal1, animal2)}"); // prints false
print("${identical(animal1.age, animal2.age)}"); // prints true
}
如果Dart整数相等,则认为它们相同。整数
10
没有两个不同的版本,因此当您询问相同(animal1.age,animal2.age)
时,实际上只是检查它们的整数年龄是否相同
变量是不同的,它们恰好持有相同的(相等和相同的)值,这就是您要检查的。再次感谢Irn,但我在Dart的某个地方读到了所有东西都是对象,所以我认为
相同(animal1.age,animal2.age)
并不意味着我们正在检查animal1.age==animal2.age1
。所有值都是对象。变量不是对象,因此您不会检查它是否是相同的age
变量,只检查它是否是存储在两个age
变量中的相同值。值10
是一个对象。恰好只有一个值为10的整数对象,所以它是存储在两个age
变量中的同一个对象。谢谢你,这是有意义的。