当前位置 : 主页 > 编程语言 > java >

【初见Dart】第五章:方法

来源:互联网 收集:自由互联 发布时间:2022-06-30
第五章:方法 ​​1. 方法定义​​ ​​1.1 概述​​ ​​1.2 方法特性​​ ​​1.3 代码示例​​ ​​2. 可选参数​​ ​​2.1 概述​​ ​​2.2 代码示例​​ ​​3. 默认参数值​​ ​​


第五章:方法

  • ​​1. 方法定义​​
  • ​​1.1 概述​​
  • ​​1.2 方法特性​​
  • ​​1.3 代码示例​​
  • ​​2. 可选参数​​
  • ​​2.1 概述​​
  • ​​2.2 代码示例​​
  • ​​3. 默认参数值​​
  • ​​3.1 概述​​
  • ​​3.2 代码示例​​
  • ​​4. 方法对象​​
  • ​​4.1 概述​​
  • ​​4.2 代码示例​​
  • ​​5. 匿名方法​​
  • ​​5.1 概述​​
  • ​​5.2 特性​​
  • ​​5.3 代码示例​​
  • ​​6. 闭包​​
  • ​​6.1 概述​​
  • ​​6.2 代码示例​​

1. 方法定义

1.1 概述

​​型体​​​【初见Dart】第五章:方法_flutter

1.2 方法特性

- 方法也是对象, 并且有具体类型Function
- 返回值类型、参数类型都可省略
- 箭头语法: => expr是{ return expr;}缩写。只适用于一个表达式
- 方法都有返回值。如果没有指定,默认return null最后一句执行

1.3 代码示例

void main(List args) {
print(args);
}PS D:\WorkSpace\1_Github\Repository_Flutter\Practice_Dart> cd chapter5
PS D:\WorkSpace\1_Github\Repository_Flutter\Practice_Dart\chapter5> dart function_declaration.dart 1 "Test" true
[1, Test, true]
PS D:\WorkSpace\1_Github\Repository_Flutter\Practice_Dart\chapter5>void main(List args) {
print(args);//[]

print(getPerson("张三", 18));//name= 张三, age= 18
printPerson("李四", 20);//name= 李四, age= 20
}

int gender = 1;
//这里这个=>箭头函数很像Kotlin的语法糖=
getPerson(name, age) => gender == 1 ? "name= $name, age= $age" : "Test";

printPerson(name, age) {
print("name= $name, age= $age");
}

2. 可选参数

2.1 概述

- 可选命名参数: { param1,param2... }
- 可选位置参数: [ param1,param2... ]
- 如果存在具体参数,可选参数声明,必须在参数后面

2.2 代码示例

void main() {
printPerson("李四");//name= 李四, age= 0, gender= ?
printPerson("李四", age: 20);//name= 李四, age= 20, gender= ?
printPerson("李四", age: 20, gender: "Male");//name= 李四, age= 20, gender= Male
printPerson2("张三");//name= 张三, age= 0, gender= ?
printPerson2("张三", 18);//name= 张三, age= 18, gender= ?
printPerson2("张三", 18, "Female");//name= 张三, age= 18, gender= Female
}

printPerson(String name, {int age = 0, String gender = "?"}) {//必需设置默认参数哦
print("name= $name, age= $age, gender= $gender");
}

printPerson2(String name, [int age = 0, String gender = "?"]) {//必需设置默认参数哦
print("name= $name, age= $age, gender= $gender");
}

3. 默认参数值

3.1 概述

- 使用=在可选参数指定默认值
- 默认值只能是编译时常量

3.2 代码示例

void main() {
printPerson("李四");
printPerson("李四", age: 20);
printPerson("李四", gender: "Male");
}

printPerson(String name, {int age = 30, String gender = "Female"}) {
print("name= $name, age= $age, gender= $gender");
}

4. 方法对象

4.1 概述

- 方法可作为对象赋值给其它变量
- 方法可作为参数传递给其它方法

4.2 代码示例

void main() {
Function func = printHello;
func();//Hello 这里很简单,就是变量进行赋值,然后加(),作为了一个方法执行
var list = [1, 2, 3, 4];
list.forEach(print);//1234 list依次遍历,相当于lambda的index,作为print(?)的入参进行打印
/**
* 相当于kotlin的
* list.forEach{ i ->
* println(i)
* }
*/

var list2 = ["h", "e", "l", "1", "o"];
print(listTimes(list2, times));
}

void printHello() {
print("Hello");
}

List listTimes(List list, String times(str)) {
for (var index = 0; index < list.length; index++) {
list[index] = times(list[index]);
}
return list;
}

String times(str) {
return str * 3;
}

5. 匿名方法

5.1 概述

​​型体​​​【初见Dart】第五章:方法_可选参数_02

5.2 特性

- 可赋值给变量,通过变量进行调用
- 可在其它方法中直接调用或传递给其它方法

5.3 代码示例

void main() {
var func = (str) {
print("Hello---$str");
};
func(30);//Hello---30

(() {
print("Test");
})();//Test

var list2 = ["h", "e", "l", "l", "o"];
var result = listTimes(list2, (str) {
return str * 3;
});
print(result);//[hhh, eee, lll, lll, ooo]
}

List listTimes(List list, String times(str)) {
for (var index = 0; index < list.length; index++) {
list[index] = times(list[index]);
}
return list;
}

6. 闭包

6.1 概述

- 闭包是一个方法(对象)
- 闭包定义在其它方法内部
- 闭包能够访问外部方法内的局部变量,并持有其状态

6.2 代码示例

void main() {
var func = a();
var func1 = b();
func();
func();
print("----->");
func1();
func1();
/**
* 0
1
----->
0
1
*/
}

a() {
int count = 0;
printCount() {
print(count++);
}

return printCount;
}

b() {
int count = 0;
return () {
print(count++);
};
}


上一篇:【Kotlin】笔记22-泛型的高级特性
下一篇:没有了
网友评论