Dart学习笔记-方法
Posted 追到梦的魔术师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart学习笔记-方法相关的知识,希望对你有一定的参考价值。
一、方法定义
- 方法也是对象,并且有具体类型Function
- 返回类型、参数类型都可以省略
- 箭头语法:=> expr 是return expr;缩写。只适用于一个表达式
- 方法都有返回值。如果没有制定,默认return null左后一句执行
//方法也是对象,并且有具体类型Function
String getPerson(String name, int age)
return "名字:$name,年龄:$age";
printPerson(name,age)
print("名字:$name,年龄:$age");
//=>语法
getPerson1(name, age) => "名字:$name,年龄:$age";
print(getPerson('张三',12));
printPerson('张三',12);
print(getPerson1('张三',12));
二、可选参数
- 可选命名参数:param1,param2,…
- 可选位置参数:[param`,param2,…]
//1、可选命名参数param1,...
printPersionOptional1(name,age,gender) => "名字:$name,年龄:$age,性别:$gender";
//2、可选位置参数[param1,...]
printPersionOptional2(name,[age,gender]) => "名字:$name,年龄:$age,性别:$gender";
注意:可选参数必须在具体参数之后!!!
三、默认参数
- 使用=在可选参数指定默认值
- 默认值只能是编译时常量
//默认参数
printPersionOptionalDefault(name,age=12,gender="男") => "名字:$name,年龄:$age,性别:$gender";
归纳代码:
//要达到可选命名参数的用法,那就在定义函数的时候给参数加上
void enable1Flags(bool bold, bool hidden) => print("$bold , $hidden");
//定义可选命名参数时增加默认值
void enable2Flags(bool bold = true, bool hidden = false) => print("$bold ,$hidden");
//可忽略的参数在函数定义时用[]符号指定
void enable3Flags(bool bold, [bool hidden]) => print("$bold ,$hidden");
//定义可忽略参数时增加默认值
void enable4Flags(bool bold, [bool hidden = false]) => print("$bold ,$hidden");
//可选命名参数函数调用
enable1Flags(bold: true, hidden: false); //true, false
enable1Flags(bold: true); //true, null
enable2Flags(bold: false); //false, false
//可忽略参数函数调用
enable3Flags(true, false); //true, false
enable3Flags(true,); //true, null
enable4Flags(true); //true, false
enable4Flags(true,true); // true, true
四、对象方法
- 方法可作为对象赋值给其他变量
- 方法可作为参数传递给其他方法
void printHrello()
print("Hello");
void printDoubleNumber(num)
print(num*5);
List listTimes(list,times(str))
for(var index = 0; index < list.length; index ++)
list[index] = times(list[index]);
return list;
List listTimes1(list)
var fun = (str)=>str*3;
for(var index = 0; index < list.length; index ++)
list[index] = fun(list[index]);
return list;
times(str) => str*3;
Function func = printHrello;
func();
var list = [1,2,3,4];
//forEach接收一个Function类型的参数
list.forEach(print);
list.forEach(printDoubleNumber);
print(listTimes(['a','b','c','d'],times));
执行结果:
Hello
1
2
3
4
5
10
15
20
[aaa, bbb, ccc, ddd]
五、匿名方法
匿名方法特征:
- 可赋值给变量,通过变量进行调用
- 可在其他方法中直接调用或传递给其他方法
//匿名方法
var func = (str)
print('======= $str');
;
func("Hlelo");
//匿名方法直接执行
(()
print('=======');
)();
print(listTimes(['a','b','c','d'],(str)=>str*5));
print(listTimes1(['a','b','c','d']));
六、闭包
- 闭包是一个方法(对象)
- 闭包定义在其他方法内部
- 闭包能够访问外部方法内的局部变量,并持有其状态
a()
int count = 0;
printCount()
print(count++);
return printCount;
var func = a();
func();
func();
func();
func();
执行结果:
0
1
2
3
另一种写法:
a()
int count = 0;
// printCount()
// print(count++);
//
return ()
print(count++);
;
执行结果仍然是:
0
1
2
3
以上是关于Dart学习笔记-方法的主要内容,如果未能解决你的问题,请参考以下文章