搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 考拉的日常 > Dart语言(五):Function

Dart语言(五):Function

考拉的日常 2019-11-08

函数

函数特性  函数也是对象并且具有类型 Function
返回值类型 参数类型都可省略
箭头函数  => expr 是{return expr;}缩写,只适用于一个表达式
函数都有返回值 如果没有指定 默认return null最后一句
void main(List args){ //方法定义 print(args); // []  print(add(12,2.0)); // 14.0  printPerson('jack',20); // name=jack,age=20 print(getPerson('lucy',32)); // name=lucy,age=32}
num add(num a,num b){ return a + b;}/** * 返回类型 方法名(arg1,arg2){ * 方法体... * return 返回值 * } */String printPerson(String name, int age){ print("name=$name,age=$age");}getPerson(name,age) => "name=$name,age=$age";


函数参数

void main(){printPerson("张三"); // name=张三,age=null,gender=null// 根据命名的方式传参数printPerson("张三",age:12,gender:'hello');// name=张三,age=12,gender=helloprintPerson2("张三"); // name=张三,age=null,gender=null// 根据位置的方式传参数printPerson2("张三",18,'你好');// name=张三,age=18,gender=你好}//可选参数// {int age,String gender} 可选参数 传参根据命名printPerson(String name,{int age,String gender}){   print('name=$name,age=$age,gender=$gender'); // $符 插值表达式}// [int age,String gender] 可选参数 传参根据位置printPerson2(String name,[int age,String gender]){   print('name=$name,age=$age,gender=$gender');}// 默认参数,为参数赋初始值printPerson3(String name,{int age = 30,String gender = 'Female'}){ print('name=$name,age=$age,gender=$gender');}


函数对象

void main() { Function fun = printHello; fun(); var list = [1, 2, 3]; list.forEach(print); // 方法可以作为一个参数传递 var list2 = ['hehe', 'yaya', 'a']; print(listTimes(list2, times)); // 方法作为参数传递}
printHello() { print('Hello');}
List listTimes(List list, String f(str)) { for (var i = 0; i < list.length; i++) { list[i] = f(list[i]); } return list;}
String times(str) { return str * 3;}


匿名函数

  可赋值给变量  通过变量进行调用
  可在其他方法中直接调用或传递给其他方法
void main(){ var fun = (){ print('Hello'); // Hello }; fun();
((){ print('object'); // object })(); // 立即函数闭包
var list = ['a','b','c','d']; print(listTimes(list, (str){return str * 2;})); // [aa, bb, cc, dd]}

List listTimes(List list, String f(str)) { for (var i = 0; i < list.length; i++) { list[i] = f(list[i]); } return list;}


闭包

闭包是一个方法(对象)

闭包定义在其他方法内部

闭包能够访问外部方法内的局部变量,并维持状态

void main() { var fun = a(); fun();//1 fun();//2 fun();//3}
a(){ int count = 0; countNum(){ count++; print(count); } return countNum;}




版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Dart语言(五):Function》的版权归原作者「考拉的日常」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注考拉的日常微信公众号

考拉的日常微信公众号:web_cbs8710064

考拉的日常

手机扫描上方二维码即可关注考拉的日常微信公众号

考拉的日常最新文章

精品公众号随机推荐