目录
Dart中的函数 函数的定义 可选参数 默认参数 命名参数 箭头函数 匿名函数 闭包
内置方法/函数:就是系统自带的方法,比如一直用的打印方法: print();
Dart中的函数 函数的定义 可选参数 默认参数 命名参数 箭头函数 匿名函数 闭包
Dart中的函数分为两种,内置函数和自定义函数。
内置方法/函数:就是系统自带的方法,比如一直用的打印方法: print();
自定义方法:
自定义方法的基本格式:
返回类型 方法名称(参数1,参数2,...){
方法体
return 返回值;
}
如:
//一个无返回类型的自定义方法
void printInfo(){
print('我是一个自定义方法');
}
//一个有返回类型的自定义方法
int getNum(){
var myNum=123;
return myNum;
}
自定义方法可以写在main()方法里,也可以现在main方法外,void表示是无返回类型的方法,返回类型可以是任意类型,但是需要与返回值保持一直:
//返回类型为String的函数
String printUserInfo(){
return 'this is str';
}
//返回类型为List的函数
List getList(){
return ['111','2222','333'];
}
Dart中的函数的调用
在dart中所有函数都要在入口函数main()中执行
如:(main()中的方法皆为上文中定义出来的方法)
void main(){
print('调用系统内置的方法');
printInfo();
var n=getNum();
print(n);
print(printUserInfo());
print(getList());
}
方法的作用域
void main (){
void xxx(){
aaa(){
print(getList());
print('aaa');
}
aaa();
}
// aaa(); 错误写法,超出aaa()方法的作用域
xxx(); //调用方法
}
}
如上所示,方法内是可以嵌套方法的,但是在xxx()方法内定义的方法,只可以在本方法内部调用,如果写在外面,会提示找不到该方法;但是可以在aaa()中调用getList()方法,因为getList()的作用域是全局的;
Dart中调用方法传参
1、定义一个方法 求1到这个数的所有数的和
int sumNum(int n){//一般建议规定好参数类型
var sum=0;
for(var i=1;i<=n;i++)
{
sum+=i;
}
return sum;
}
var n1=sumNum(5);//传入参数5,即显示1到5的和
print(n1);//输出结果:15
var n2=sumNum(100);//传入参数5,即显示1到100的和
print(n2);//输出结果:5050
2、定义一个方法然后打印用户信息
String printUserInfo(String username,int age){ //形参
return "姓名:$username---年龄:$age";
}
print(printUserInfo('张三',20)); //实参
//输出结果:姓名:张三---年龄:20
写在方法里的参数,称为形参,具体传入的参数,称为实参;
3、定义一个带可选参数的方法
String printUserInfo(String username,[int age]){ 写在[]里的参数,为可选参数
if(age!=null){
return "姓名:$username---年龄:$age";
}
return "姓名:$username---年龄保密";
}
print(printUserInfo('张三',21)); //输出结果:姓名:张三---年龄:21
print(printUserInfo('张三'));//输出结果:姓名:张三---年龄保密
4、定义一个带默认参数的方法
String printUserInfo(String username,[String sex='男',int age]){//[]中的参数如果有默认值,则为默认参数
if(age!=null){
return "姓名:$username---性别:$sex--年龄:$age";
}
return "姓名:$username---性别:$sex--年龄保密";
}
print(printUserInfo('张三'));//输出结果: 姓名:张三---性别:男--年龄保密
5、定义一个命名参数的方法
String printUserInfo(String username,{int age,String sex='男'}){ //注意:这里是{}
if(age!=null){
return "姓名:$username---性别:$sex--年龄:$age";
}
return "姓名:$username---性别:$sex--年龄保密";
}
print(printUserInfo('张三',age:20,sex:'未知'));//{}中的参数也可选填,但是要传参时需要"参数名:参数"这样的格式
//输出结果:姓名:张三---性别:未知--年龄:20
6、实现一个 把方法当做参数的方法
fn1(){
print('fn1');
}
//方法
fn2(fn){
fn();
}
//调用fn2这个方法 把fn1这个方法当做参数传入
fn