函数

Dart是一种真正的面向对象的语言,所以即使是函数也是对象,并且有一个类型Function。这意味着函数可以赋值给变量或作为参数传递给其他函数,这是函数式编程的典型特征。同时意味着在Dart语言中我们会经常使用到高阶函数.

2 . 函数返回值,可以省略, 默认为dynamic, 且不会进行类型推断

typedef bool CALLBACK();

//不指定返回类型,此时默认为dynamic,不是bool
isNoble(int atomicNumber) {
return _nobleGases[atomicNumber] != null;
} void test(CALLBACK cb){
print(cb());
}
//报错,isNoble不是bool类型
test(isNoble);

3. 函数作为参数传递

void execute(var callback) {
callback();
}
execute(() => print("xxx")) // 可以直接将函数体传入到实参位置, 而不用多余的定义一个函数, 运算拿到函数结果(返回值) 再作为形参传递, 高阶函数的特性

4.可选位置参数, 可选命名参数

String say(String from, String msg, [String device]) { //可选位置参数,必须是参数的最后定义
var result = '$from says $msg';
if (device != null) {
result = '$result with a $device';
}
return result;
}
//设置[bold]和[hidden]标志
void enableFlags({bool bold, bool hidden}) {
// ...
}
调用函数时,可以使用指定命名参数。例如:paramName: value enableFlags(bold: true, hidden: false);

可选位置参数 和 可选命名参数在同一个函数定义中,不能同时出现

  

最新文章

  1. POST方式提交表单时,后台接受实体如果继承了父类,将无法映射表单对应数据
  2. [python实现设计模式]-1. 单例模式
  3. 推荐有料哥:HR社保公积金状况大揭底
  4. POJ 2186-Popular Cows (图论-强联通分量Korasaju算法)
  5. Protel99SE制作拼板的方法
  6. VC++2005、VC2008中Release版本设置为可调试的设置方法
  7. pxe+kickstart cobbler无人值守装机
  8. javascript第六章--BOM
  9. [LeetCode] Largest Sum of Averages 最大的平均数之和
  10. Python3学习笔记32-xlwt模块
  11. XXX on tree
  12. 【BZOJ2724】蒲公英(分块)
  13. codevs 2147 数星星
  14. Basic4android v3.50 发布
  15. MySQL之正则表达式
  16. Web测试项目计划与安排
  17. devm_xxx机制
  18. (二十一)Makefile例子
  19. 【kd-tree】bzoj4066 简单题
  20. 【机器学习】集成学习之xgboost的sklearn版XGBClassifier使用教程

热门文章

  1. IDEA 使用jebel热部署插件启动失败
  2. dart快速入门教程 (3)
  3. vue全家桶(2.3)
  4. Wooden Stricks——两个递增条件的线性DP
  5. 使用原生js来控制、修改CSS伪元素的方法总汇, 例如:before和:after
  6. web前端工程化/构建自动化
  7. 创建新用户后无法切换 su: failed to execute /bin/bash: Permission denied
  8. Linux 字符处理之【grep】
  9. 前端开发-css
  10. 【译】Exception Helper – Rethrown Exceptions