dart快速入门教程 (5)
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)的更多相关文章
- dart快速入门教程 (8)
9.dart中的库 9.1.自定义库 自定义库我们在前面已经使用过了,把某些功能抽取到一个文件,使用的时候通过import引入即可 9.2.系统内置库 以math库为例: import "d ...
- dart快速入门教程 (7.4)
7.12.多态 多态字面上理解就是多种状态,通俗的说,多态表现为父类定义一个方法不去实现,子类继承这个方法后实现父类的方法,这个方法有多种表现 // import 'person.dart'; voi ...
- dart快速入门教程 (7.3)
7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 class Person { final String name; final num ...
- dart快速入门教程 (7.2)
7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 class Person { final String name; final num ...
- dart快速入门教程 (7.1)
7.面向对象 dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,所有的类都是Object的子类,换句话说就是万物皆对象 7.1.类与对象 void main() { // 注意:ne ...
- dart快速入门教程 (2)
2.变量和数据类型 2.1.变量和常量 变量通俗的说就是可以变化的量,作用就是用来存储数据,你可以把一个变量看作是一个水果篮,里面可以装苹果.梨.香蕉等,常量就是一个固定的值,和变量是相对的,变量可以 ...
- dart快速入门教程 (1)
1.环境搭建 1.1.dart简介 Dart 是一种 易于学习. 易于扩展.并且可以部署到 任何地方 的 应用 编程 语言.Google 使用 Dart 来开发 大型应用.flutter使用dart语 ...
- dart快速入门教程 (6)
6.内置操作方法和属性 6.1.数字类型 1.isEven判断是否是偶数 int n = 10; print(n.isEven); // true 2.isOdd判断是否是奇数 int n = 101 ...
- dart快速入门教程 (4)
4.流程控制 4.1.分支结构 1.if语句 void main() { int score = 80; if (score >= 90) { print('优秀'); } else if (s ...
随机推荐
- 我的web课堂作业
001 my first page <%@ page language="java" contentType="text/html; charset=UTF-8&q ...
- Java 第十一届 蓝桥杯 省模拟赛 递增序列
问题描述 在数列 a[1], a[2], -, a[n] 中,如果 a[i] < a[i+1] < a[i+2] < - < a[j],则称 a[i] 至 a[j] 为一段递增 ...
- Java实现 LeetCode 392 判断子序列
392. 判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅包含英文小写字母.字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符 ...
- Java实现 LeetCode 381 O(1) 时间插入、删除和获取随机元素 - 允许重复
381. O(1) 时间插入.删除和获取随机元素 - 允许重复 设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构. 注意: 允许出现重复元素. insert(val):向集合中插 ...
- Java实现 蓝桥杯VIP 算法训练 判定数字
算法训练 判定数字 时间限制:1.0s 内存限制:512.0MB 编写函数,判断某个给定字符是否为数字. 样例输入 9 样例输出 yes import java.util.Scanner; publi ...
- Java实现 蓝桥杯VIP 算法提高 师座操作系统
算法提高 师座操作系统 时间限制:1.0s 内存限制:256.0MB 问题描述 师座这天在程序设计课上学了指针和结构体以后,觉得自己可以轻松的写出操作系统,为了打败大微软帝国,他给这个系统起了个响亮的 ...
- Java实现 蓝桥杯VIP 算法提高 彩票
算法提高 彩票 时间限制:1.0s 内存限制:256.0MB 问题描述 为丰富男生节活动,贵系女生设置彩票抽奖环节,规则如下: 1.每张彩票上印有7个各不相同的号码,且这些号码的取值范围为[1, 33 ...
- Java实现 蓝桥杯VIP 算法提高 乘法运算
算法提高 乘法运算 时间限制:1.0s 内存限制:512.0MB 问题描述 编制一个乘法运算的程序. 从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出. 输入格式 输入只有一行,是两个用空格 ...
- Java实现数字密码发生器
在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全:如果设置不好记的密码,又担心自己也会忘记:如果写在纸上,担心纸张被别人发现或弄丢了- 这个程序的 ...
- 03 . Prometheus监控容器和HTTP探针应用
Eeporter是什么及来源? 是什么? 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter.而Exporter的一个实例称为target,如下所示,Prom ...