内置函数
比如前面我们一直使用的print()方法就是Dart的内置方法。
自定义方法
语法
返回类型 方法名称(参数1,参数2,...){
方法体
return 返回值;
}
例如:
main() {
printName('hello Dart!');
print(getName());
}
//无返回值
void printName(String name) {
print(name);
}
//返回String类型
String getName() {
String name = 'hello Dart';
return name;
}
传参
一般用法
void printName(String name) {
print(name);
}
可选参数
有些老教程是这样的:
但是现在已经不支持这样写了,具体原因见 missing_default_value_for_parameter
新写法
//给定默认参数
void printName(String name,[int age=10]) {
}
//可选
void printName(String name, [int? age]) {
}
Dart 中实现一个把方法当做参数的方法
这个不说了,js中有很多将函数当作参数的列子。
箭头函数
略,跟js中的箭头函数一个用法
匿名函数
main() {
() {
print("这是个匿名函数");
}();
}
把一个匿名方法赋值给变量
var a = () {
print("这是个匿名函数");
};
注:dart中的箭头函数式的匿名函数跟js中有很大区别,只能用来执行函数,并且不能使用分号
错误写法:
正确写法:
闭包
1、全局变量特点: 全局变量常驻内存、全局变量污染全局
2、局部变量的特点: 不常驻内存会被垃圾机制回收、不会污染全局
我们想实现的功能:
1.常驻内存
2.不污染全局
要实现上面功能就产生了闭包,闭包可以解决这个问题。
- 闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)
- 闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。
示例
1、全局变量:常驻内存、全局变量污染全局
局部变量:不常驻内存会被垃圾机制回收、不会污染全局
闭包 常驻内存 不污染全局