IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 【初见Dart】第五章:方法 -> 正文阅读

[游戏开发]【初见Dart】第五章:方法

1. 方法定义

1.1 概述

型体
在这里插入图片描述

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 概述

型体
在这里插入图片描述

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++);
  };
}
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:59:49  更:2022-03-30 19:04:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 18:00:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码