5.函数

5.1.函数定义

语法:

返回值类型 函数名(参数类型 参数1, 参数类型 参数2,...) {
// 函数体
return ‘返回值’
}

举例:

void main() {
print(sum(10, 20));
} num sum(int a, int b) {
return a + b;
}

参数类型是可以省略的

void main() {
print(sum(10, 20));
} sum(a, b) {
return a + b;
}

如果没有指定返回值,默认返回null

void main() {
print(sum(10, 20));
} sum(a, b) {
print(a + b);
}

支持箭头函数

void main() {
var fn = (a, b) => a + b ;
print(fn(10, 20));
}

5.2.可选参数

1.可选命名参数

void main() {
// 通过设置age这样的前缀来和可选参数对应,意味着如果三个参数都传的话 age和gender的位置是可以换的 例如这样:person('小强',gender: '男', age: 18)
print(person('小强', age: 18));
} String person(String name, {int age, String gender}) {
return '${name} - ${age} - ${gender}';
}

2.可选位置参数

位置参数的形参和实参是通过位置来一一对应的

void main() {
// 注意位置不能调换
print(person('小强', 18, '男'));
} String person(String name, [int age, String gender]) {
return '${name} - ${age} - ${gender}';
}

5.3.参数默认值

void main() {
// 没有传入gender 使用默认值
print(person('小强',age: 18));
} String person(String name , {int age, String gender = '男'}) {
return '${name} - ${age} - ${gender}';
}

5.4.函数参数

void main() {
print(printPerson(person));
} String person(String name , {int age}) {
return '${name} - ${age}';
} String printPerson (String fn(String name , {int age})) { String name1 = 'xiaoqiang';
int age = 18;
return fn(name1, age: 18);
}

5.5.匿名函数

void main() {
String str1 = printPerson((String name, {int age}){return '${name} - ${age}';});
print(str1);
} String person(String name , {int age}) {
return '${name} - ${age}';
} String printPerson (String fn(String name , {int age})) { String name1 = 'xiaoqiang';
int age = 18;
return fn(name1, age: 18);
}
void main() {
var fn = (String name, int age) {
return '${name} - ${age}';
};
print( fn('xiaoqiang', 20));
}
void main() {
// 匿名函数自执行
var s = ((String name, int age) {
return '${name} - ${age}';
})('xiaoqiang', 30);
print(s);
}

5.6.闭包

闭包的形式就是函数中套函数,作用是可以通过闭包把函数中的私有变量暴露出去

void main() {
var f = fn();
f();
f();
f();
f();
f();
} fn () {
var n = 0;
fn1 () {
n++;
print(n);
};
return fn1;
}

螺钉课堂视频课程地址:http://edu.nodeing.com

dart快速入门教程 (5)的更多相关文章

  1. dart快速入门教程 (8)

    9.dart中的库 9.1.自定义库 自定义库我们在前面已经使用过了,把某些功能抽取到一个文件,使用的时候通过import引入即可 9.2.系统内置库 以math库为例: import "d ...

  2. dart快速入门教程 (7.4)

    7.12.多态 多态字面上理解就是多种状态,通俗的说,多态表现为父类定义一个方法不去实现,子类继承这个方法后实现父类的方法,这个方法有多种表现 // import 'person.dart'; voi ...

  3. dart快速入门教程 (7.3)

    7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 class Person { final String name; final num ...

  4. dart快速入门教程 (7.2)

    7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 class Person { final String name; final num ...

  5. dart快速入门教程 (7.1)

    7.面向对象 dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,所有的类都是Object的子类,换句话说就是万物皆对象 7.1.类与对象 void main() { // 注意:ne ...

  6. dart快速入门教程 (2)

    2.变量和数据类型 2.1.变量和常量 变量通俗的说就是可以变化的量,作用就是用来存储数据,你可以把一个变量看作是一个水果篮,里面可以装苹果.梨.香蕉等,常量就是一个固定的值,和变量是相对的,变量可以 ...

  7. dart快速入门教程 (1)

    1.环境搭建 1.1.dart简介 Dart 是一种 易于学习. 易于扩展.并且可以部署到 任何地方 的 应用 编程 语言.Google 使用 Dart 来开发 大型应用.flutter使用dart语 ...

  8. dart快速入门教程 (6)

    6.内置操作方法和属性 6.1.数字类型 1.isEven判断是否是偶数 int n = 10; print(n.isEven); // true 2.isOdd判断是否是奇数 int n = 101 ...

  9. dart快速入门教程 (4)

    4.流程控制 4.1.分支结构 1.if语句 void main() { int score = 80; if (score >= 90) { print('优秀'); } else if (s ...

随机推荐

  1. Rocket - tilelink - FIFOFixer

    https://mp.weixin.qq.com/s/JS4Pguwa6LXjPsMq6nW8HA   简单介绍FIFOFixer的实现.   ​​   1. 基本介绍   按照一定的策略把某一部分m ...

  2. Maven_setting文件/解释

    setting文件解释: setting.xml配置文件 maven的配置文件settings.xml存在于两个地方: 1.安装的地方:${M2_HOME}/conf/settings.xml 2.用 ...

  3. ActiveMQ 笔记(一)概述与安装

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.消息中间件的产生背景 1.前言:考虑消息中间件的使用场景? 在何种场景下需要使用消息中间件 为什么要 ...

  4. Java实现蓝桥杯-算法提高 P1003

    算法提高 P1003 时间限制:1.0s 内存限制:256.0MB 作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词.不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检 ...

  5. Java实现 LeetCode 284 顶端迭代器

    284. 顶端迭代器 给定一个迭代器类的接口,接口包含两个方法: next() 和 hasNext().设计并实现一个支持 peek() 操作的顶端迭代器 – 其本质就是把原本应由 next() 方法 ...

  6. Java实现 蓝桥杯VIP 算法提高 格子位置

    算法提高 格子位置 时间限制:1.0s 内存限制:512.0MB 问题描述 输入三个自然数N,i,j (1<=i<=N,1<=j<=N),输出在一个N*N格的棋盘中,与格子(i ...

  7. Java实现信用卡校验

    当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过. 该校验的过程: 1.从卡号最后一位数字开始, ...

  8. Java实现 蓝桥杯 历届试题 数字游戏

    问题描述 栋栋正在和同学们玩一个数字游戏. 游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈.栋栋首先说出数字1.接下来,坐在栋栋左手边的同学要说下一个数字2.再下面的一个同学要从上一个同学说的数 ...

  9. 【JAVA习题二十八】海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

    package erase; import java.util.Scanner; public class 猴子分桃 { public static void main(String[] args) ...

  10. javascript 面向对象学习(二)——原型与继承

    什么是原型? 首先我们创建一个简单的空对象,再把它打印出来 var example = {} console.log(example) 结果如下: { __proto__: { constructor ...