Dart_02_函数的基本用法_参数

128 阅读3分钟

函数的基本用法

  • 一个基本的函数包含传参,实现以及返回值,其中返回值可以不要也不写,但是即使函数不传入任何参数,不实现任何作用,格式依然要写,以下是一个简单的函数
main(List<String> args) {
  
  int a = sum(1, 10);
  print(a);

  final b = sum1(2, 3);

  sum2;
}
//返回值类型可以省略(开发中不推荐:阅读性变差)
int sum(int num1,int num2){
  return num1+num2;
}

sum1(int num1,int num2){
  return num1+num2;
}
//可以不传入任何值,内部不实现任何事情,但是格式必须写
sum2(){

}

函数的参数

Dart函数的参数分为必选参数和可选参数,可选参数可以有默认值,必选参数没有默认值,因为必选参数要求调用时候必须传入值,所以就没必要有默认值

必选参数

  • Dart函数必选参数是调用时候必须传入的参数,假如调用时候不传,就会报错

"报错如下"

可选参数

Dart函数的可选参数顾名思义就是可以选择参数,可以传也可以不传,同时可选参数的写法又分为

位置可选参数和命名可选参数

位置可选参数

  • 位置可选参数顾名思义就是以固定位置的方式来匹配可选参数。
  • 位置可选参数以[id obj]的方式命名,当传参时候按照对应的顺序传入对应声明类型的值即可,如果不需要传,则不用传,位置传入通过[]方式修饰,多个位置可选参数使用逗号隔开
例:
void sayHellow2(String name, [int age , double height ]){
print("name $name age $age height $height");
}   

sayHellow2("lilei",18,18.8);//这里根据位置匹配类型,必须类型匹配对,否则会报错
sayHellow2("lilei2");//则不传
sayHellow2("lilei",18)//传入了name和age,height未传
  • 位置参数可以有默认值,在声明时候直接赋值即可
  例:
  void sayHellow2(String name, [int age = 1, double height = 2.0]){
  print("name $name age $age height $height"); 
  } //旧版本Dart要求默认值double类型必须写成double类型,这里是2.0,新版 可以写为int类型2,系统会帮我们转为2.0double类型,没有硬性要求,同样传值时候也可以传入2
  
位置参数要求了在调用时候必须按照位置调用,假如我们age不需要传但是height需要传入的话,也不能跳过age,可以通过sayHellow2("lilei",null,18.8)方式来跳过age,但是假如我们age有默认值情况下,又会将age赋值为null,那么有没有一种我即不传值,但是依然可以有默认值的方式呢,为了解决这个需求,Dart为我们提供了另外一种可选参数方式:命名可选参数

命名可选参数

  • 命名参数是以键值对的方式来匹配可选参数
  • 命名参数以{key,key2}的方式来命名,中间以逗号隔开,当传入时候以键值对(key:value)的方式来匹配对应声明类型的可选参数
//命名可选参数
void sayHellow3(String name, {int age, double height}){


}
sayHellow3("lilei", height:18.8 ,age: 18);//命名可选参数这里传参必须写参数名称,系统才会匹配上,因为引用了命名,所以顺序就没有要求
  • 命名参数可以有默认值,在声明时候直接赋值即可
因为命名参数的灵活性我们可以跳过不想传入的可选参数,所以在日常项目中命名参数是我们使用的最多的可选参数