方法的定义以及作用域
自定义方法的基本格式
返回类型 方法名称 (参数1,参数2...){
方法体
return 返回值;
}
//定义一个没有返回值的方法 void表示该方法没有返回值
void printInfo(){
print("我是一个自定义的方法");
}
//定义一个带有返回值(返回类型为int)的方法
int getNum(){
var myNum = 123;
return myNum;
}
void main(List<String> args) {
print("调用系统内置的方法");
printInfo();//我是一个自定义的方法
print(getNum());//123
print(getNum());//一个方法可以调用多次
//方法作用域
void aaa(){
bbb(){
print("内方法");
print(getNum());//可以调用getNum,因为getNum方法在最外层
}
bbb();
}
//bbb();//报错 因为bbb方法是在局部作用域
aaa();
}
调用方法传参
-
定义一个方法,求1到这个数的所有数的和
如果知道返回类型,建议写上返回类型,参数也建议约束下类型,不然传参的时候可能会引起报错
int sumNum(int n) {
var sum = 0;
for (var i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
void main() {
print(sumNum(5)); //15
print(sumNum(100)); //5050
}
- 定义一个方法,然后打印用户信息
String printUserInfo(String userName, int age){//这里的参数叫行参
return "姓名:$userName---年龄:$age";
}
void main() {
//传入的参数叫实参
print(printUserInfo("张三", 23));//姓名:张三---年龄:23
print(printUserInfo("李四", 32));//姓名:李四---年龄:32
}
-
定义一个带可选参数的方法
1、如果同时包含可选参数和必需参数,必需的参数在参数列表前面, 可选数在后面。 2、在必选参数后,用[]或者{}框起来的参数叫可选参数,在传参的时候可以选择不传 3、注意:Dart在2.12版本之后开始支持空安全(Null Safety):空安全是一种对可能为空的变量在编译期就进行校验的一种审查机制,有了空安全,原本处于运行时的空值引用错误将变为编辑时的分析错误。这种检查机制对所有变量的默认值也进行了改变,以前默认为null,而使用空安全后,代码中的类型将默认是非空的,意味着除非你声明它们可空,否则它们的值都不能为空并且会报错 4、创建变量时,如果想要一个变量可为null,需要显式声明为可空的类型,具体就是使用“?”进行声明。比如int?等,表示变量是一个可空类型,可以赋值为空。 5、或者给可选参数赋默认值int age = 0
String getUserInfo(String userName, [int? age]){
if (age !=null) {
return "姓名:$userName---年龄:$age";
} else {
return "姓名:$userName";
}
}
void main(List<String> args) {
print(getUserInfo("王二"));//姓名:王二
//如果可选参数使用{}框起来的,在传参的时候需要使用paramName:value的形式指定为哪个可选参数赋值
// print(getUserInfo("麻子",age:25));//姓名:麻子---年龄:25
print(getUserInfo("麻子",25));//姓名:麻子---年龄:25
}
- 定义一个把方法当参数的方法
void main(List<String> args) {
fn1(){
print("I`m fn1");
}
fn2(fn){
fn();
}
fn2(fn1);//I`m fn1
//定义一个匿名方法
var fn = () {
print("我是一个匿名方法哦");
};
fn();//我是一个匿名方法哦
}
记录Dart学习,谢谢!