Dart在线运行

版本:
运行结果
教程手册
代码仓库
极速运行
交互输入
极速运行模式,更高效的运行,点击编辑器上方的运行按钮即刻体验吧。
以下是用户最新保存的代码
迷宫图测试功能 发布于:2022-03-16 09:33 Dart Test 发布于:2022-03-07 15:38 Dart 生成过去30天的日期,无论是什么时候 发布于:2021-11-29 10:41 dart学习 发布于:2020-10-10 18:59 dart学习 发布于:2020-10-10 18:59 dart学习 发布于:2020-09-29 14:36 [更多]
显示目录

Typedefs



Typedefs

函数在 Dart 中也是对象,就像字符和数字对象一样。 使用 typedef (或者 function-type alias )为函数起一个别名, 别名可以用来声明字段及返回值类型。 当函数类型分配给变量时,typedef会记录类型信息。

typedef在代码中未使用 ,参考以下 :

class SortedCollection {
  Function compare;

  SortedCollection(int f(Object a, Object b)) {
    compare = f;
  }
}

// Initial, broken implementation. // broken ?
int sort(Object a, Object b) => 0;

void main() {
  SortedCollection coll = SortedCollection(sort);

  // 虽然知道 compare 是函数,
  // 但是函数是什么类型 ?
  assert(coll.compare is Function);
}

类型信息在 f 赋值给 compare 的时候丢失了。 f 的类型是 (Object, Object) → int (这里 → 代表返回值类型), 但是 compare 得到的类型是 Function 。我们如果使用显式的名字并保留类型信息, 这样开发者和工具都可以使用这些信息:

typedef Compare = int Function(Object a, Object b);

class SortedCollection {
  Compare compare;
  SortedCollection(this.compare);
}

// Initial, broken implementation.
int sort(Object a, Object b) => 0;

main() {
  SortedCollection coll = SortedCollection(sort);
  assert(coll.compare is Function);
  assert(coll.compare is Compare);
}

typedefs 目前只能使用在函数类型上,希望将来这种情况有所改变。

因为typedefs 只是别名,我们提供了一种方式来判断任意函数的类型。例如:

typedef int Compare(int a, int b);

int sort(int a, int b) => a - b;

main() {
  assert(sort is Compare); // True!
}
由JSRUN为你提供的Dart在线运行、在线编译工具
        JSRUN提供的Dart在线运行,Dart 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。

title

使用此草稿 删除草稿

  • 00:23
注册登录后可减少验证码的弹出,点击前往 注册 | 登录

皮肤:

运行模式:

嵌入代码 iframe嵌入:


服务器已安装大部分常用的第依赖库,但仍可能存在一些未被安装的库, 可以通过本窗口立即安装所需依赖库。


请输入依赖库的名称:

请选择语言: