网易首页 > 网易号 > 正文 申请入驻

dart系列之:dart语言中的函数

0
分享至

简介

函数是所有编程语言都有的内容,不管是面向对象还是面向过程,函数都是非常重要的一部分。dart中的函数和java中的函数有什么区别呢?

dart作为一种面向对象的编程语言,它的函数也是一个对象,用Function来表示。先看下函数的定义:

abstract class Function {

external static apply(Function function, List? positionalArguments,
[Map? namedArguments]);

int get hashCode;

bool operator ==(Object other);
}

既然函数是一个对象,那么可以将函数赋值给对象,还可以将函数当做参数传递给其他的函数。

下面是一个简单的函数,由返回值,函数名称,参数和函数体来表示:

bool isStudent(int age){
return age < 20;

尽管dart建议我们指定函数的返回值类型,但是你也可以忽略返回值:

isStudent(int age){
return age < 20;

函数还有一个简写方式,如果函数体只有一条语句,那么可以使用=> 来替代括号:

isStudent(int age) => age < 20;

看起来更加简洁。

函数的参数

dart中的函数参数有普通参数,也有命名参数。

普通参数很好理解,那么什么是命名参数呢?

命名参数就是给参数传递的时候起了一个名字,这样函数在调用的时候,可以指定参数的名字,来赋值。

看一个函数参数和命名参数的例子:

bool calculator(int age , {int? size}){

可以这样调用:

calculator(15,size:10);

默认情况下命名参数是可选的,也就是说函数在调用的时候可以选择是否传递可选的参数。

如果必须要传递某个参数,那么可以将其设置为required.

除了命名参数之外,dart还有可选的位置参数,就是将参数放在[]中,如下所示:

String say(String from, String msg, [String? device]) {
var result = 'from saysmsg';
if (device != null) {
result = 'result with adevice';
return result;

上面的函数在调用的时候,可以只传入普通参数,也可以额外的传入可选的位置参数,如下:

say('Bob', 'Howdy');
say('Bob', 'Howdy', 'smoke signal');

dart中的参数还可以设置默认值,如下:

String say(String from='mack', String msg, [String? device='ios']) {

main函数

dart中main函数是应用程序的启动入口,main()是一个特殊的函数,他是没有返回值的带有可选List 参数的函数,如下所示:

void main() {
print('Hello, World!');
void main(List arguments) {
print(arguments);
匿名函数

大部分函数都是带有名字的,方便函数的调用。在某些情况下,函数也可以不带名字,这样的函数叫做匿名函数。

匿名函数就是没有名字的函数,如下所示:

([[Type] param1[, …]]) {
codeBlock;

匿名函数通常用在不需要被其他场景调用的情况,比如遍历一个list:

const list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {
print('{list.indexOf(item)}:item');
闭包

提到闭包,大家马上就会想到javascript,没错,除了javascript,dart中也可以构建闭包。

什么是闭包呢?简单点说就是函数的函数。也就是一个函数中定义的变量,在函数范围外被其他的函数所使用。

Function sum(int age1){
return (int i) => age1 +i;

void main() {
var sum2 = sum(2);
var result = sum2(5);
}

上例子中,sum传入的变量2,被在后续的sum2中使用。

函数的返回值

所有的函数都有返回值,如果没有显示返回的话,那么返回的就是null.

所以对下面的函数来说:

foo() {}

它的值是null,也就是说下面的表达式是true:

assert(foo() == null);
总结

以上,就是Dart中函数的定义了。

本文已收录于 http://www.flydean.com/03-dart-function/

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
好可怜!被撕票的孙先生发给母亲最后信息:妈,能先打过来一些吗

好可怜!被撕票的孙先生发给母亲最后信息:妈,能先打过来一些吗

文雅笔墨
2024-07-07 18:22:37
笑死!韩国网友: 为什么中国不把张家界还回来?引发各国网友嘲讽

笑死!韩国网友: 为什么中国不把张家界还回来?引发各国网友嘲讽

有趣的火烈鸟
2024-07-07 21:11:09
岳云鹏出演苹果个人信息安全大片!苹果官方:用户面容ID数据会被加密独立存储!连苹果官方和iOS都无法访问

岳云鹏出演苹果个人信息安全大片!苹果官方:用户面容ID数据会被加密独立存储!连苹果官方和iOS都无法访问

和讯网
2024-07-08 12:38:10
抖音头部商家,被80%退货率压垮

抖音头部商家,被80%退货率压垮

电商报APP
2024-07-08 10:03:42
追踪仅退款的人

追踪仅退款的人

蓝鲸财经
2024-07-08 10:48:14
东北一家升学宴成丢人宴,34桌只来半桌,网友:就差把要钱写脸上

东北一家升学宴成丢人宴,34桌只来半桌,网友:就差把要钱写脸上

朗威谈星座
2024-07-06 22:19:50
5位厅干职务调整,2位跨省履新

5位厅干职务调整,2位跨省履新

鲁中晨报
2024-07-07 22:35:08
2-0大冷门,联赛第14掀翻联赛第2,李金羽神了:上任首秀开门红

2-0大冷门,联赛第14掀翻联赛第2,李金羽神了:上任首秀开门红

侧身凌空斩
2024-07-07 20:54:15
大S越来越过分!张兰再爆新瓜,大S提新要求:给两娃在台湾买房!

大S越来越过分!张兰再爆新瓜,大S提新要求:给两娃在台湾买房!

小娱乐悠悠
2024-07-07 16:30:33
王永庆在瑞士银行存400亿,去世15年子女取不出,因须先交300亿

王永庆在瑞士银行存400亿,去世15年子女取不出,因须先交300亿

杨哥历史
2024-07-05 14:49:10
退役后留西班牙?克罗斯:德国没有安全感,不会让女儿半夜出门

退役后留西班牙?克罗斯:德国没有安全感,不会让女儿半夜出门

直播吧
2024-07-06 21:25:20
刘耀文宋亚轩车祸后续!女生大量信息被扒:开车者15岁,家里有钱

刘耀文宋亚轩车祸后续!女生大量信息被扒:开车者15岁,家里有钱

花花lo先森
2024-07-08 15:15:26
中国霸气回应!老美被拒绝月壤后,NASN“谎言”被揭穿了!

中国霸气回应!老美被拒绝月壤后,NASN“谎言”被揭穿了!

小蘑菇壹号
2024-07-08 16:06:08
给你脸了?成都地铁上几个黑人大骂国粹,川渝老辈子绝对不惯着你

给你脸了?成都地铁上几个黑人大骂国粹,川渝老辈子绝对不惯着你

辉哥说动漫
2024-07-07 19:07:22
来了!范尼已经抵达卡灵顿,准备加入滕哈格教练组开展工作

来了!范尼已经抵达卡灵顿,准备加入滕哈格教练组开展工作

懂球帝
2024-07-08 17:52:08
茅台崩了呀!酒价大跌,股价大跌,一天就没了 630 亿

茅台崩了呀!酒价大跌,股价大跌,一天就没了 630 亿

流苏晚晴
2024-06-13 16:56:45
三大消息:美军死到临头了?白宫突然收到重大警告;大战征兆已现

三大消息:美军死到临头了?白宫突然收到重大警告;大战征兆已现

文雅笔墨
2024-07-08 16:59:01
今天是7月8号中午,刚刚传来1个重要消息,或将产生重大影响?

今天是7月8号中午,刚刚传来1个重要消息,或将产生重大影响?

股市皆大事
2024-07-08 09:10:34
对独行侠有什么评价?布伦森打趣:他们进了总决赛 他们不需要我

对独行侠有什么评价?布伦森打趣:他们进了总决赛 他们不需要我

直播吧
2024-07-08 17:30:11
华为将推出全球首个三折叠手机:拥有10英寸内屏

华为将推出全球首个三折叠手机:拥有10英寸内屏

PChome电脑之家
2024-07-08 14:16:15
2024-07-08 18:48:49
flydean程序那些事
flydean程序那些事
最通俗的解读,最深刻的干货!
356文章数 438关注度
往期回顾 全部

科技要闻

抖音电商正无限逼近拼多多

头条要闻

承诺飞行员300万美金 乌情报部门欲劫持俄轰炸机失败

头条要闻

承诺飞行员300万美金 乌情报部门欲劫持俄轰炸机失败

体育要闻

佩佩:四十而已

娱乐要闻

泫雅龙俊亨被曝将结婚!女方被质疑可能怀孕

财经要闻

盛松成:货币政策有效而有限

汽车要闻

后排配置超迈巴赫 有享界S9你还会选56E吗?

态度原创

房产
亲子
教育
本地
公开课

房产要闻

超大规模!海口迈瀛片区征收补偿方案曝光!

亲子要闻

幼儿园老师给学生们表演各种节目,收获一群“迷弟迷妹”

教育要闻

填报志愿:学校、专业、城市 如何选择?

本地新闻

云游中国 | 走进安塞,寻觅黄土高原文化记忆

公开课

连中三元是哪三元?

无障碍浏览 进入关怀版