Flutter基础之Dart语言入门
函数
Dart是一种真正的面相对象的语言,函数即是对象,类型是Function,即可赋值给变量或作为参数传递给其他函数
- 函数声明
bool isNoble(int atomicNumber) {
return _nobleGases[atomicNumber] != null;
}
dart函数声明如果没有显式声明返回值类型时会默认当做dynamic处理,注意函数的返回值没有类型推断
代码语言:javascript复制typedef bool CALLBACK();
//不指定返回类型,此时默认为dynamic,不是bool
isNoble(int atomicNumber) {
return _nobleGases[atomicNumber] != null;
}
void test(CALLBACK cb){
print(cb());
}
//报错,isNoble不是bool类型
test(isNoble);
- 箭头函数 对于只包含一个表达式的函数,简写如下 =>
bool isNoble (int atomicNumber )=> _nobleGases [ atomicNumber ] != null;
函数作为变量
代码语言:javascript复制var say= (str){
print(str);
};
say("hi world");
函数作为参数传递
代码语言:javascript复制void execute(var callback){
callback();
}
execute(()=>print("xxx"));
- 可选的位置参数
包装一组函数参数,用[] 标记为可选的位置参数
代码语言:javascript复制String say(String from, String msg, [String device]) {
var result = '$from says $msg';
if (device != null) {
result = '$result with a $device';
}
return result;
}
- 可选的命名参数
定义函数时,使用{param1, param2 , …},可用于指定命名参数,
代码语言:javascript复制//设置[bold]和[hidden]标志
void enableFlags({bool bold, bool hidden}) {
// ...
}
调用函数时,可以使用指定命名参数,如paramName: value
代码语言:javascript复制enableFlags(bold: true, hidden: false);
可选命名参数在Flutter中使用非常频繁。
匿名函数 匿名方法
代码语言:javascript复制(参数1,参数2,...){
方法体...
return返回值
}
匿名方法特性
可赋值给变量,通过变量进行调用
可在其他方法中直接调用或传递给其它方法