Flutter学习-dart(5):dart函数
2021/11/29 23:11:26
本文主要是介绍Flutter学习-dart(5):dart函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. dart函数声明和使用
1.1 函数分类
- 内置函数
- 自定义函数
1.2 定义函数
//自定义方法的基本格式: 返回类型 方法名称(参数1,参数2,...){ 方法体 return 返回值; }
2. 参数定义
2.1 定义一个方法 求1到这个数的所有数的和
int sumNum(int n){ var sum=0; for(var i=1;i<=n;i++) { sum+=i; } return sum; }
2.2 定义一个方法然后打印用户信息
String printUserInfo(String username,int age){ //行参 return "姓名:$username---年龄:$age"; }
2.3 定义一个带可选参数的方法
String printUserInfo(String username,[int age]){ //行参 if(age!=null){ return "姓名:$username---年龄:$age"; } return "姓名:$username---年龄保密"; }
2.4 定义一个带默认参数的方法
String printUserInfo(String username,[String sex='男',int age]){ //行参 if(age!=null){ return "姓名:$username---性别:$sex--年龄:$age"; } return "姓名:$username---性别:$sex--年龄保密"; }
2.5 定义一个命名参数的方法
String printUserInfo(String username,{int age,String sex='男'}){ //行参 if(age!=null){ return "姓名:$username---性别:$sex--年龄:$age"; } return "姓名:$username---性别:$sex--年龄保密"; }
2.6 实现一个 把方法当做参数的方法
//方法 fn1(){ print('fn1'); } //方法 fn2(fn){ fn(); } //调用fn2这个方法 把fn1这个方法当做参数传入 fn2(fn1);
3. 函数的作用域
- 局部作用域
- 全局作用域
List getList() { return ['111', '2222', '333']; } main() { //演示方法的作用域 void xxx() { aaa() { print(getList()); print('aaa'); } aaa(); } // aaa(); 错误写法 xxx(); //调用方法 }
4. 箭头函数
example
//1. 需求:使用forEach打印下面List里面的数据 List list=['苹果','香蕉','西瓜']; list.forEach((value)=>print(value)); //2. 修改下面List里面的数据,让数组中大于2的值乘以2 List list2=[4,1,2,3,4]; var newList=list2.map((value)=>value>2 ? value*2 : value);
5. 匿名方法
example
var printNum = () { print(123); }; printNum();
6. 自执行方法(和js差不多)
example
((int n){ print(n); print('我是自执行方法'); })(12);
7. 闭包(原理和js一样)
- 全局变量特点: 全局变量常驻内存、全局变量污染全局
- 局部变量的特点: 不常驻内存会被垃圾机制回收、不会污染全局
- 想实现的功能: (采用闭包解决)
- 常驻内存
- 不污染全局
7.1 对闭包的理解
- 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)
- 闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包
7.2 闭包示例:
fn() { var a = 123; /*不会污染全局 常驻内存*/ return () { a++; print(a); }; } main() { Function b = fn(); b(); //124 b(); //125 b(); //127 }
这篇关于Flutter学习-dart(5):dart函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南