06:Dart中的函数。

1、函数(定义、内置函数、全局函数<写在入口之外>)。

//1.1 无返回值、无参数
void play(){
print('我是一个无返回值、无参数的函数');
}

//1.2 有返回值、无参数
int plaFinal(){
return 1;
}

//1.2 有返回值、有参数
int playSum(int a,int b){
return a + b;
}

void main() {

//函数调用
play();
int finalValue = plaFinal();
print(finalValue);//1

int sumValue = playSum(2,3);
print(sumValue);//5
}

2、函数调用。

String freedomRun(String name,int age){
return age.toString() + " 岁的 " + name + " is runing";
}
String desRun = freedomRun("小明", 12);
print(desRun);

3、作用域。

bool isCalculate(int a,int b){

int sumFun(int a,int b){
return a + b;
}
int subFun(int a,int b){
return a - b;
}
return subFun(a, b) > sumFun(a, b);

}

4、案例。

//案例1:定义一个函数、求和。

int numberValue(int a){
int sum = 0;
for(int i = 0; i<= a; i++){
sum += i;
}
return sum;
}

//1-5 求和
print(numberValue(5));//15
//1-100 求和
print(numberValue(100));//5050

//案例2:定义一个函数、打印用户信息。
String printUserInfo(String name,int age,String sex){
return "用户名:$name---年龄:$age---性别:$sex";
}
print(printUserInfo("小铭", 25, "男"));//用户名:小铭---年龄:25---性别:男

//案例2:定义一个函数(可选参数)、打印用户信息。
String printOtherUserInfo(String name,[int? age,String? sex]){
if(age != null && sex != null){
return "用户名:$name---年龄:$age---性别:$sex";
}
return "用户名:$name---年龄:xx--性别:xx";
}
print(printOtherUserInfo("小杰"));//用户名:小杰---年龄:xx--性别:xx

//案例3:定义一个函数(默认参数)、打印用户信息。
String printDefaultUserInfo(String name,[String sex = "男",int? age]){
if(age != null && sex != null){
return "用户名:$name---年龄:$age---性别:$sex";
}
return "用户名:$name---年龄:xx--性别:xx";
}
print(printDefaultUserInfo("小丽","女",26));//用户名:小丽---年龄:26---性别:女
//案例4:定义一个函数(命名函数)、打印用户信息。
String printDefaultAnimalInfo(String name,{String sex = "男",int? age}){
if(age != null && sex != null){
return "用户名:$name---年龄:$age---性别:$sex";
}
return "用户名:$name---年龄:xx--性别:xx";
}
print(printDefaultAnimalInfo("李四",age: 18,sex: "女"));//用户名:李四---年龄:18---性别:女

//案例5:实现一个把方法当做参数的方法。

void desSky(){
print("蓝色的天空真美!");
}

void speakSkyDes(desSkyFun){
desSkyFun();
}
speakSkyDes(desSky);

5、箭头函数。

//方式1
List nickName = ["Tone","Mary","Jony"];
nickName.forEach((element) {
print(element);
});
//方式2 箭头函数
nickName.forEach((element)=> {
print(element)
});
//方式3 箭头函数
nickName.forEach((element)=> print(element));

//案例1:修改List里面的数据,让大于2的值乘以3。
List nickNumber = [1,2,3,4,6,4];
var newNickNumber = nickNumber.map((obj){
return obj>2?obj * 3:obj;
});
print(newNickNumber.toList());//[1, 2, 9, 12, 18, 12]

 6、匿名函数。

var printDesNum = (){
print("匿名方法");
};
printDesNum();//匿名方法

var printDesSumNum = (int a,int b){
print(a+b);
};
printDesSumNum(1,2);//3

7、递归 实现1--100累加。

/*
闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)
写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。
*/
//6.1 全局和局部变量的特点
/*
1、全局变量特点: 全局变量常驻内存、全局变量污染全局
2、局部变量的特点: 不常驻内存会被垃圾机制回收、不会污染全局
*/
//6.2 闭包解决的问题
/*
1、常驻内存
2、不污染全局
*/
//案例:
fn(){
var a=123; /*不会污染全局 常驻内存*/
return(){
a++;
print(a);
};
}
var b=fn();
b();//124
b();//125
b();//126

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值