首页 > 解决方案 > Dart 中声明的箭头函数是 lambda 表达式吗?

问题描述

我的理解是 lambda 函数是一个可以无名的函数。维基百科建议

var sqr = (x) => x * x;
print(sqr(5));

(其中var与 相同dynamic Function(dynamic)),并且

print(((x) => x * x)(5));

都是在 Dart 中编写 lambda 表达式的可能方式。

在一些教程中,我阅读了类似于

dynamic sqr(dynamic x) => x * x;
print(sqr(5));

也被认为是 lambda 表达式,因为它使用箭头符号。然而,我的理解是,这不是一个 lambda 表达式,因为这个函数总是需要用一个名字来定义。我对么?

标签: dartlambda

解决方案


dynamic sqr(dynamic x) => x * x;不是匿名函数,因为它有一个标识符。

var sqr = (x) => x * x;是一个 lambda,因为(x)没有标识符。

=>只是简写,{ return something; }并不一定意味着您正在编写匿名函数。例如:

var sqr = (x){ return x * x;};仍然是一个匿名函数。


推荐阅读