0Pricing
Dart Academy · 课时

高阶函数与柯里化

传递、返回并部分应用函数

高阶函数与柯里化 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。

函数就是值

在 Dart 中,函数只是一个可以存储在变量里的值。这个简单的概念开启了整个函数式模式的世界。🎯

int square(int x) => x * x;
var op = square;
print(op(4)); // 16

什么是高阶函数

高阶函数是指接收函数作为参数,或返回函数的函数。您已经在列表方法中使用过它们。

传入函数

当您将行为作为参数传入时,由调用方决定要执行什么操作。在这里,apply 会运行它接收到的任意函数。

int apply(int v, int Function(int) f) => f(v);
print(apply(5, (x) => x + 1)); // 6

函数类型语法

int Function(int) 表示:接收一个 int 并返回一个 int 的函数。类型可以让您的意图一目了然。

void run(String Function(String) format) {
  print(format('hi'));
}

返回函数

高阶函数也可以返回一个函数。返回的函数会记住它创建时周围的值。

Function makeAdder(int n) {
  return (int x) => x + n;
}

使用返回的函数

调用创建器一次,构建一个专用函数,然后重复使用它。每个结果都是一个独立的已配置小工具。

var add10 = makeAdder(10);
print(add10(5)); // 15
print(add10(1)); // 11

认识柯里化

柯里化会将一个多参数函数转换成一连串单参数函数。您可以一次提供一个值。

int Function(int) add(int a) => (int b) => a + b;
print(add(3)(4)); // 7

偏应用

现在固定第一个参数,其余参数稍后再提供。这就是偏应用,它可以创建可复用且预先加载好的辅助函数。

var add3 = add(3);
print(add3(10)); // 13
print(add3(20)); // 23

为什么要柯里化

柯里化可以让您从通用函数构建专用函数,而不必重写逻辑。当您组合小型处理流水线时,它尤其有用。

函数参数类型

您可以使用 typedef 为复杂的函数类型命名,让代码各处的签名更易读。

typedef IntOp = int Function(int);
int apply(int v, IntOp f) => f(v);

撕取方法的快捷方式

无需用 lambda 包装方法,直接传入它的名称即可。这种方法撷取能让调用简洁整齐。

['1', '2', '3'].map(int.parse).forEach(print);

快速检查

让我们检查一下您对高阶函数的理解。

回顾

函数就是值,因此您可以传入和返回函数。柯里化和偏应用可以将通用函数变成专用工具。做得不错!🚀

常见问题解答

「高阶函数与柯里化」课时是免费的吗?

是的 — 「高阶函数与柯里化」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。

「高阶函数与柯里化」这节课中我会学到什么?

传递、返回并部分应用函数 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Dart Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「高阶函数与柯里化」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Dart Academy 课中编写并运行代码吗?

能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 高阶函数与柯里化
  2. fold、reduce 与展开
  3. 使用 sync* 实现惰性可迭代对象与生成器
  4. 组合纯函数处理流水线
← 返回 Dart Academy