【发布时间】:2020-02-22 09:11:52
【问题描述】:
Dart / Flutter 中有哪些类型原语?
我期待一个包含String、Class、Function(?) 之类的列表。
我似乎在 Dart documentation 的任何地方都找不到这个。
实际上现在我正在写一些我想将函数作为参数传递的东西,所以我试图弄清楚函数/方法类型是什么(假设这是一个东西),但更一般地说我想要对所有 Dart 类型原语的引用。
【问题讨论】:
我期待一个包含String、Class、Function(?) 之类的列表。
我似乎在 Dart documentation 的任何地方都找不到这个。
实际上现在我正在写一些我想将函数作为参数传递的东西,所以我试图弄清楚函数/方法类型是什么(假设这是一个东西),但更一般地说我想要对所有 Dart 类型原语的引用。
【问题讨论】:
我认为这就是您要寻找的: dart:core library:
内置类型、集合和其他核心功能 飞镖程序。
特别是这部分:Classes,你可以在哪里找到:
字符串 UTF-16 代码单元序列。 [...]
Object 所有 Dart 对象的基类。 [...]
Function 所有函数类型的基类。 [...]
【讨论】:
大多数 Dart 类型只是类/接口类型。与 Java 不同,Dart 没有不是接口的“原始”值类型,因此在 Dart 中,int、double、String、bool 和 Null 普通接口是 Object? 的子类型(以及Object 除了Null),并且值只是普通对象。
Dart 确实有一些 types 和 type 构造函数,它们不是类/接口类型,或者具有阻止您实现它们的特定规则。特别是:
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})。
【讨论】: