You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart中已声明的箭头函数是否属于lambda表达式?

你的理解是完全正确的,核心混淆点其实是很多教程把「箭头语法」和「lambda表达式」两个概念混为一谈了。

我们可以先明确lambda表达式的核心判定标准:核心特征是匿名性,不需要预先绑定固定函数名,可以作为一等值直接传递、赋值给变量或者立即执行。

对应你提到的三种写法:

  • 第一种写法
var sqr = (x) => x * x;
print(sqr(5));

等号右侧的(x) => x * x本身是没有名称的匿名函数,只是被赋值给了sqr变量,本质属于lambda表达式,只是后续可以通过变量名调用而已。

  • 第二种写法
print(((x) => x * x)(5));

这是典型的立即执行匿名函数,全程没有绑定任何固定名称,完全符合lambda表达式的定义。

  • 第三种写法
dynamic sqr(dynamic x) => x * x;
print(sqr(5));

这只是用箭头语法简化的命名函数,不属于lambda表达式。这里的=>只是Dart提供的普通函数简写,替代了{ return x * x; }的完整写法,和下面的代码完全等价:

dynamic sqr(dynamic x) {
  return x * x;
}

这种写法必须指定函数名sqr,本质是命名的顶级函数/类方法,不具备lambda的匿名核心属性,所以不属于lambda表达式。

内容的提问来源于stack exchange,提问作者Jacob Emery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:24:03