1、Dart 方法介绍
- 方法的构成:返回值 + 方法名 + 参数
int sum1(int a, int b) {
return a + b;
}
- 返回值类型可缺省
sum2(int a, int b) {
return a + b;
}
- 参数类型可缺省
sum3(a, b) {
return a + b;
}
- 可通过 { } 设置可选参数;并为可选参数设置默认值
int sum4(int a, int b, {bool? isPrint = false}) {
var result = a + b;
if (isPrint ?? false) {
print("计算结果:" + result);
}
return result;
}
void main() {
sum4(1, 2, isPrint: true); //计算结果:3
}
2、常见方法
(1)入口方法
void main() {
}
(2)实例方法
- 类中的方法
class Calculate {
//实例方法
int reduce(int a, int b, {bool isPrint = false}) {
var result = a - b;
if (isPrint) {
print("结果:$result");
}
return result;
}
}
void main() {
Calculate calculate = Calculate();
calculate.reduce(6, 4, isPrint: true); //结果:2
}
(3)私有方法
- 私有方法:方法名前面添加下划线_
- 作用域:当前的文件
main1.dart
void main() {
Student student = Student();
student.study(); //学习
student._sleep(); //睡觉
_add(1, 9); //add 结果:10
}
class Student {
study() {
print("学习");
}
//私有方法
_sleep() {
print("睡觉");
}
}
//私有方法
_add(a, b) {
print("add 结果:${a + b}");
}
main2.dart
void main() {
_objectType();
Student student = Student();
student.study();
student._sleep(); //报错
_add(3, 4); //报错
}
(4)匿名方法
- 匿名方法:没有名字的方法,有时也被称为 lambda 表达式 或 closure 闭包
void main() {
_foo();
}
//匿名方法
_foo() {
var list = ["私有方法", "匿名方法"];
// void forEach(void action(E element))
// 其中 void action(E element) 就是一个匿名方法
// 类比 Kotlin 中将方法作为参数传递
list.forEach((element) {
print("${list.indexOf(element)}: $element");
//0: 私有方法
// 1: 匿名方法
});
}
void main() {
_reduce(3, 4, (c) {
print("3 - 4 = $c"); //3 - 4 = -1
});
}
// 匿名方法 void action(int c)
// 类比 Kotlin 中将方法作为参数传递
_reduce(int a, int b, void action(int c)) {
action(a - b);
}
当不需要使用参数时,可以用 _ 隐藏,如下
void main() {
_reduce(3, 4, (_) {
print("3 - 4 = ?");
});
}
_reduce(int a, int b, void action(int c)) {
action(a - b);
}
(5)静态方法
- 通过 “类名.静态方法” 的方式调用
void main() {
Student.learning();
}
class Student {
//静态方法
static learning() {
print("学生们在学习"); //学生们在学习
}
}