https://dart.dev/guides/language/coming-from/js-to-dart#built-in-types
在Dart中,所有类型都是引用类型,这意味着所有变量都引用一个对象(类的实例)。然而,int、double、String和bool类型被实现为不可变(不变)并被规范化,这意味着它们的行为就好像它们是值类型一样。
我经常在很多地方看到这样的解释,但是
“价值类型”,
“参考类型”,
“规范化”
我从未见过对上述术语的具体定义。我认为有必要用Dart语言来定义这些术语,因为它是对Dart语言的解释,但它是否存在于官方文档或其他任何地方?
如果您有一个用Dart (或其他语言)定义这些术语的特定定义的文档,我将非常感谢您能告诉我。
如果没有,这些术语用的是哪种语言?由于上面的页面是一篇关于比较JavaScript和Dart的文章,所以它是JavaScript的定义吗?
或者是斯威夫特语的定义还是别的什么?
毕竟,如果这些术语在其他语言中被解释为术语,我认为有必要将这些语言作为学习Dart的前提知识。这是什么?
在Dart中,“规范化”一词到底是否意味着“恒定值”?
void main() {
int outer = 0;
int other = outer;
other = 1;
print(outer); // 0 (not changed)
}这种行为(结果)的含义是,毕竟,int类型的文字是const常量,不是吗?
或者它意味着它的行为与const常数相同。
这就是“规范化”的定义吗?
发布于 2022-06-14 07:27:55
在任何编程语言中,数据可以通过引用传递,也可以通过值传递。
如果通过引用传递,则它只创建指向同一变量的新标识符。因此,如果您对其中一个变量进行任何更改,它将在两个变量中反映出来,因为它们基本上是指向公共内存地址的2个名称。
如果通过值传递,它将创建一个完全新的变量,并分配一个单独的内存,因此这两个变量之间没有联系,因此在一个变量中的更改不会在另一个变量中反映出来。
正如您在问题中所述,int、double、String和bool类型作为值传递,因此值不会在第二个变量中更新,但其他数据类型将被更新。
https://stackoverflow.com/questions/72610941
复制相似问题