首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Dart中“动态”是数据类型吗?

在Dart中“动态”是数据类型吗?
EN

Stack Overflow用户
提问于 2022-06-12 18:29:33
回答 2查看 149关注 0票数 1

我读过dynamic是Dart中的一种数据类型,但是称它为数据类型是正确的吗?它看起来不像数据类型,它似乎是允许变量成为任何数据类型的一种方式。

EN

回答 2

Stack Overflow用户

发布于 2022-06-12 19:28:57

在Dart中,dynamic是一种类型。它属于类型层次结构,并通过子类型关系与其他类型相关。

它是"top“类型,这意味着每个类型都是dynamic的一个子类型。(包括自身,因为“子类型”关系是自反的-每一种类型都被认为是自身的子类型,而“适当的子类型”一词仅用于谈论非超级类型的子类型。)

作为顶级类型,它意味着任何值都可以赋值给dynamic类型的变量。它们也可以用于任何其他顶级类型,这主要是指Object?。两者的区别在于:

  • 具有静态类型dynamic的表达式可以分配给任何类型。这显然是不安全的,因此运行时插入一个检查,即所谓的“隐式下传”,它的工作方式就像执行as TargetType.
  • You一样,可以调用具有静态类型dynamic的表达式中的任何成员。这显然是不安全的,所以如果对象没有这样的成员,运行时就会抛出。

这种运行时检查不安全行为(而不是静态类型检查)是该类型命名为dynamic的原因。使用dynamic是关闭静态类型系统的一种方法。小心使用。

是否可以将dynamic称为“数据类型”取决于“数据类型”的含义。Dart语言规范没有使用任何术语“数据类型”。

票数 5
EN

Stack Overflow用户

发布于 2022-06-12 19:11:56

是。规范称它为类型(https://www.ecma-international.org/publications-and-standards/standards/ecma-408/)

类型动态表示未知类型。如果没有提供静态类型注释,则类型系统假设声明具有未知类型type dynamic方法,用于每个可能的标识符和一致性,以及命名参数的每一种可能组合。这些方法的返回类型都是动态的,它们的形式参数都是动态的。类型dynamic对每个可能的标识符都具有属性。这些属性都具有动态

类型。

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

https://stackoverflow.com/questions/72594864

复制
相关文章

相似问题

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