Dart基础-函数
来源:互联网 发布:怎么安装软件字库 编辑:程序博客网 时间:2024/05/16 14:25
函数
下面是一个函数的例子
void printNumber(num number) { print('The number is $number.');}
虽然参考文档建议指定参数和返回值的类型,但是你可以不指定
printNumber(number) { print('The number is $number.');}
如果函数只有一个表达式,你可以使用速写语法
void printNumber(num number) => print('The number is $number.');
=> expr; 是 { return expr;} 的简写语法,下面是调用函数的例子
printNumber(123);
可选参数
一个函数可以有两种参数:可选的和必需的,必需参数放在前面,后面跟可选参数
可选参数可以是位置参数或命名参数,两种都可以有默认值,如果没有提供默认值则为null
可选的命名参数
定义一个函数,使用 {param1, param2, …} 指定命名参数,调用函数时,你可以指定使用命名参数 paramName: value
enableFlags({bool bold, bool hidden}) { // ...}main(List<String> arguments) { enableFlags(bold: true, hidden: false);}
使用(:)指定默认值
enableFlags({bool bold: false, bool hidden: false}) { // ...}main(List<String> arguments) { enableFlags(bold: true);}
可选的位置参数
把参数用 [ ] 包装起来,就能标识成位置参数
String say(String from, String msg, [String device]) { var result = '$from says $msg'; if (device != null) { result = '$result with a $device'; } return result;}main(List<String> arguments) { //无可选参数的调用 assert(say('Bob', 'Howdy') == 'Bob says Howdy'); //有可选参数的调用 assert(say('Bob', 'Howdy', 'smoke signal') == 'Bob says Howdy with a smoke signal');}
使用 = 指定默认值
String say(String from, String msg, [String device = 'carrier pigeon', String mood]) { var result = '$from says $msg'; if (device != null) { result = '$result with a $device'; } if (mood != null) { result = '$result (in a $mood mood)'; } return result;}main(List<String> arguments) { assert(say('Bob', 'Howdy') == 'Bob says Howdy with a carrier pigeon');}
main() 函数
每个程序都有main() 函数,作为程序的入口,返回值是void,还有一个可选参数
main(List<String> arguments) { print(arguments); print(arguments.length);}
高阶函数
将函数作为参数传递给另一个函数
printElement(element) { print(element);}main(List<String> arguments) { var list = [1, 2, 3]; list.forEach(printElement);}
将一个函数分配给一个变量
main(List<String> arguments) { var loudify = (msg) => '!!! ${msg.toUpperCase()} !!!'; assert(loudify('hello') == '!!! HELLO !!!');}
作用域
dart的作用域跟其他语言一样,直接看一个例子
var topLevel = true;main(List<String> arguments) { var insideMain = true; myFunction() { var insideFunction = true; nestedFunction() { var insideNestedFunction = true; assert(topLevel); assert(insideMain); assert(insideFunction); assert(insideNestedFunction); } }}
闭包
dart的闭包就是函数对象,其实跟JavaScript的闭包函数差不多,理论请参考JavaScript的闭包函数,这里直接写个例子
//返回一个函数对象,功能是返回累加的数字Function makeAdder(num addBy) { return (num i) => addBy + i;}main(List<String> arguments) { //创建一个函数add2,add2返回2 var add2 = makeAdder(2); //创建一个函数add4,add4返回4 var add4 = makeAdder(4); //add2返回2+3 assert(add2(3) == 5); //add4返回4+3 assert(add4(3) == 7);}
函数是否相等
测试高阶函数、静态方法和实例方法是否相等
//一个高阶函数foo() {}class SomeClass { //一个静态方法 static void bar() {} //一个实例方法 void baz() {}}main(List<String> arguments) { var x; //比较高阶函数 x = foo; assert(foo == x); //比较静态方法 x = SomeClass.bar; assert(SomeClass.bar == x); //比较实例方法 var v = new SomeClass(); var w = new SomeClass(); var y = w; x = w.baz; assert(y.baz == x); assert(v.baz != w.baz);}
0 0
- Dart基础-函数
- Dart基础学习01--走近Dart
- Dart基础-运算符
- Dart基础-类
- Dart基础-变量与类型
- Dart基础-控制流程与异常处理
- Dart基础-泛型和库
- Dart基础学习03--方法的使用
- Dart入门—基础类型与正则
- Dart入门—函数与运算符
- Dart基础学习02--变量及内置类型
- google Dart
- Hello, Dart!
- dart资料
- DART booster
- Flutter学习之旅(四)----Flutter开发语言Dart的基础语法
- Dart 出现不能识别.dart的文件
- Dart语言概览
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- C++_利用栈进行运算符表达式的运算
- form 单选按钮
- MapReduce1和YARN(MapReduce2)运行机制
- UVa - 140 - Bandwidth
- Dart基础-函数
- OCP-1Z0-051-2015-22题
- MFC 控件最大化和还原,list control奇偶颜色设置
- 联诚发(LCF)防水LED显示屏新技术领航业界
- redis的研究跟使用
- ARM_如何压栈
- CentOS 找不到ifconfig和netstat命令
- 佛山电动伸缩门厂家的发展方向
- try 和 catch