首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是“参考类型”、“价值类型”、“规范化”?(具体定义)

什么是“参考类型”、“价值类型”、“规范化”?(具体定义)
EN

Stack Overflow用户
提问于 2022-06-14 02:36:38
回答 1查看 234关注 0票数 0

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中,“规范化”一词到底是否意味着“恒定值”?

代码语言:javascript
复制
void main() {

  int outer = 0;

  int other = outer;

  other = 1;
  print(outer); // 0 (not changed)

}

这种行为(结果)的含义是,毕竟,int类型的文字是const常量,不是吗?

或者它意味着它的行为与const常数相同。

这就是“规范化”的定义吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-14 07:27:55

在任何编程语言中,数据可以通过引用传递,也可以通过值传递。

如果通过引用传递,则它只创建指向同一变量的新标识符。因此,如果您对其中一个变量进行任何更改,它将在两个变量中反映出来,因为它们基本上是指向公共内存地址的2个名称。

如果通过值传递,它将创建一个完全新的变量,并分配一个单独的内存,因此这两个变量之间没有联系,因此在一个变量中的更改不会在另一个变量中反映出来。

正如您在问题中所述,int、double、String和bool类型作为值传递,因此值不会在第二个变量中更新,但其他数据类型将被更新。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72610941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档