Dart中的函数式编程

在函数式编程中,可以做到:

  • 将函数当做参数进行传递
  • 将函数直接赋值给变量
  • 对函数进行解构,只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数(也被称为柯里化)
  • 创建一个可以被当作为常量的匿名函数,也被称为 lambda表达式

在 Dart中,每个函数都是一个对象,并且每个函数都有它的类型Function,这意味着所有函数都可以支持赋值操作,以及都可以作为参数传递给其他的函数。

命令式编程方式

String scream(int length) => "A${'a' * length}h!";

main() {
  final values = [1, 2, 3, 5, 10, 50];
  for (var length in values) {
    print(scream(length));
  }
}

函数式编程方式

String scream(int length) => "A${'a' * length}h!";

main() {
  final values = [1, 2, 3, 5, 10, 50];
  values.map(scream).forEach(print);
}

函数式的迭代特性

dart:collection 库中的 List 和 Iterable 支持 fold, where, join, skip 等函数式方法,另外 Dart 还支持 Map 和 Set 类型。

String scream(int length) => "A${'a' * length}h!";

main() {
  final values = [1, 2, 3, 5, 10, 50];
  values.skip(1).take(3).map(scream).forEach(print);
}
上一篇 Dart接口的实现
下一篇 Flutter Widget之Container
目录
文章列表
1 设计模式(15)模板方法模式
设计模式(15)模板方法模式
2
利用 Amazon Time Sync Service 保持时间同步
利用 Amazon Time Sync Service 保持时间同步
3
BigDecimal比较相等,不能用equals,要用compareTo
BigDecimal比较相等,不能用equals,要用compareTo
4
Shell脚本获取本机IP并将IP赋值给变量待用
Shell脚本获取本机IP并将IP赋值给变量待用
5
Groovy代码示例 - 字符串
Groovy代码示例 - 字符串
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。