flutter - Dart / Flutter 中的类型原语是什么?
问题描述
Dart / Flutter 中的类型原语是什么?
我期待一个包含String
, Class
, Function
(?) 之类的列表。
我似乎在Dart 文档中的任何地方都找不到这个。
具体来说,实际上现在我正在写一些我想将函数作为参数传递的东西,所以我试图弄清楚函数/方法类型是什么(假设这是一个东西),但更一般地说,我想要引用所有 Dart 类型原语。
解决方案
大多数 Dart 类型只是类/接口类型。与 Java 不同,Dart 没有非接口的“原始”值类型,因此在 Dartint
中double
,String
,bool
和Null
普通接口是Object?
(以及Object
除了Null
)的子类型,并且值只是普通对象。
Dart 确实有一些类型和类型构造函数,它们不是类/接口类型,或者具有阻止您实现它们的特定规则。尤其是:
void
- 等效于Object?
,但不允许使用该值。您可以从函数返回任何值void
,但不应有人使用它。dynamic
- 等效于Object?
,但没有静态类型检查。您可以将任何值强制转换为dynamic
,然后将其用作任何类型,如果您犯了错误,则会出现运行时错误。Never
- 所有类型的空子类型。返回的函数Never
保证会抛出。type Function(argTypes)
- 一个函数类型。有些值是函数。它们仍然是对象,但不是类/接口实例。接口的子类型Function
和Object
.FutureOr<type>
type
-和的超类型Future<type>
。type?
- 可以为空的类型。type
和的超类型Null
。
然后以下接口有限制,阻止您在自己的类中实现它们:Null
、int
、double
、num
、bool
、String
和Function
。
因此,对于函数类型,您可以将它们写为 fx, int Function(int, {int y})
.
推荐阅读
- python - 如何让 python 编程持续运行
- c# - 连接特定无线显示设备的程序
- r - 如何计算 R 中的最大 8 小时移动(滚动)平均值?
- .net - 下载器应用程序 .NET 中的未知问题
- asp.net-mvc - 如何在我的 MVC 编辑器模板中干燥代码?
- servicestack - 撤销承载令牌和刷新令牌 - ServiceStack
- bash - 用于 gzip 特定文件扩展名的 Bash 脚本
- javascript - ReactJS - 组件之外的全局状态
- c# - 等效命令或单行代码,如 C# 中 unix 中的 mget 命令
- apache-spark - 我应该如何将 org.apache.spark.ml.linalg.Vector 的 RDD 转换为数据集?