07Dart:函数
dart函数返回值是可选的,可以不知道返回值类型,但建议还是明确输入类型和返回类型方便修改,也方便阅读,函数也是对象,当没有指定返回值的时候,函数返回null
String carName(String name)
{
return 'car $name!';
}
carName2(String name)
{
return 'car $name!';
}
//is is!操作符判断对象是否为指定类型,如num、String等
assert(carName is Function);
如果函数只是简单的返回一个表达式的值,可以使用箭头语法 =>expr;
它等价于{return expr;} 可以写成carName2(name) =>'car $name!';
Dart中匿名函数的写法 (name)=>’car $name!’; 匿名函数var carName2 = (name) =>'car $name!';
typedef定义函数别名:作用就是为复杂的声明定义一个别名;
原声明:
int *(*arr[5])(char *);
变量名为a,如想用一个新别名pFun替换arr,可以定义如下:
typedef int *(*pFun)(char *);
原声明的最简化版:
pFun arr[5];
函数闭包:
Function makeSubstract(num n)
{
return (num i) => n - i;
}
void main()
{
var x = makeSubstract(5);
print(x(2));
}
初始化变量的时候,参数对应的是函数的参数num n,调用函数类型变量的时候,参数对应的是返回值中的参数num i
Dart中支持两种可选参数:命名可选参数和位置可选参数,但两种可选不能同时使用
命名可选参数使用大括号{},默认值用冒号:
位置可选参数使用方括号[],默认值用等号=