dart - 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 表达式,因为这个函数总是需要用一个名字来定义。我对么?
解决方案
dynamic sqr(dynamic x) => x * x;
不是匿名函数,因为它有一个标识符。
var sqr = (x) => x * x;
是一个 lambda,因为(x)
没有标识符。
=>
只是简写,{ return something; }
并不一定意味着您正在编写匿名函数。例如:
var sqr = (x){ return x * x;};
仍然是一个匿名函数。
推荐阅读
- java - 在socket通信中设置FIN & RST
- python - 使用 numpy. binary_repr 上的数字或替代数组 - Python
- python - 如何将Django源安装转换为包安装
- mysql - mysql中使用count()和join时返回错误值
- graph - 如何将单元格中的字符串用作图形数据范围?
- python - 错误 - OSError:读取文件“http://website”时出错,无法加载外部实体“http://website/alpha.html”
- google-apps-script - 扫描数据后自动推进单元格
- android-studio - 更新列表视图中元素的数据
- python - matplotlib 网站的原始代码不起作用
- swiftui - 带有 @Binding 控件的 SwiftUI 动态列表