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

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-12-22 14:20:50
终于来了,世界上第一个冷冻人已解冻,50年过去,他还能复活吗?

终于来了,世界上第一个冷冻人已解冻,50年过去,他还能复活吗?

听风者说
2024-12-18 21:27:45
万博和樾府业主,接受现实吧!

万博和樾府业主,接受现实吧!

房二娃
2024-12-22 17:11:40
CBA最疯狂的逆袭!比山西还疯狂的黑马:从垫底到7连胜势不可挡

CBA最疯狂的逆袭!比山西还疯狂的黑马:从垫底到7连胜势不可挡

篮球快餐车
2024-12-22 00:23:54
问界M9大定破19万辆!余承东:销量超过第2名到第20名总和

问界M9大定破19万辆!余承东:销量超过第2名到第20名总和

沙雕小琳琳
2024-12-22 18:09:49
都说你是数据刷子,如今26岁打成联盟第一,2.07亿顶薪实至名归

都说你是数据刷子,如今26岁打成联盟第一,2.07亿顶薪实至名归

大西体育
2024-12-22 20:20:18
令人寒心!刚拿中国13.8亿投资,转头就倒向美国?果然不简单

令人寒心!刚拿中国13.8亿投资,转头就倒向美国?果然不简单

傲气经说
2024-12-22 15:35:03
北京首钢冲击4连胜!曾凡博持续爆发,周琦确定出战,央视直播

北京首钢冲击4连胜!曾凡博持续爆发,周琦确定出战,央视直播

体坛瞎白话
2024-12-22 17:12:44
他是川岛芳子的弟弟,也是解放军军区司令,退休后享地专级待遇

他是川岛芳子的弟弟,也是解放军军区司令,退休后享地专级待遇

历史龙元阁
2024-12-21 19:44:21
逼中国“低头”?600万吨稀土偷运大连港,蒙古勾结美国公然毁约

逼中国“低头”?600万吨稀土偷运大连港,蒙古勾结美国公然毁约

小胡军事爱好
2024-12-19 16:35:47
不吐不快!中国男篮最不应该入选的3个人,以及最该入选的3个人

不吐不快!中国男篮最不应该入选的3个人,以及最该入选的3个人

拳击时空
2024-12-22 07:43:23
震撼全球!中国男子用锤子,敲出一座价值超过千亿的大型“宝藏”

震撼全球!中国男子用锤子,敲出一座价值超过千亿的大型“宝藏”

清风游史
2024-12-21 14:17:14
哈尔滨冰雪大世界爆火!当地一企业:为给南方游客留票,禁止员工前往!负责人:属实,违者取消评优、年终福利

哈尔滨冰雪大世界爆火!当地一企业:为给南方游客留票,禁止员工前往!负责人:属实,违者取消评优、年终福利

每日经济新闻
2024-12-22 17:11:23
李奇微:美军与中国人民志愿军比起来,除了强大火力几乎一无是处

李奇微:美军与中国人民志愿军比起来,除了强大火力几乎一无是处

老范谈史
2024-12-21 16:53:26
200块到手!中产最爱的拉夫劳伦,价格被打下来了?

200块到手!中产最爱的拉夫劳伦,价格被打下来了?

毒sir财经
2024-12-21 21:30:35
如果孩子厌学,内驱力不足,家长一定要带孩子看这两部高分纪录片!

如果孩子厌学,内驱力不足,家长一定要带孩子看这两部高分纪录片!

阿呆爸
2024-12-21 19:05:15
李世民与武则天洞房当夜,创下史上最高纪录,至今也无人能打破!

李世民与武则天洞房当夜,创下史上最高纪录,至今也无人能打破!

猫眼观史
2024-12-20 09:56:19
张兰带全家看海豚表演,汪小菲父子亲密互动,欢乐时光不忘直播

张兰带全家看海豚表演,汪小菲父子亲密互动,欢乐时光不忘直播

梦随心动
2024-12-22 18:45:08
太崩溃!杭州姑娘被它折磨一年!冬季高发,有人20年了都治不好...

太崩溃!杭州姑娘被它折磨一年!冬季高发,有人20年了都治不好...

鲁中晨报
2024-12-22 17:32:06
为什么越来越多孩子得白血病?劝告:家里的4样东西,趁早扔了

为什么越来越多孩子得白血病?劝告:家里的4样东西,趁早扔了

医护健康科普
2024-10-08 07:06:30
2024-12-22 22:32:49
flydean程序那些事
flydean程序那些事
最通俗的解读,最深刻的干货!
356文章数 438关注度
往期回顾 全部

科技要闻

售价78.80万元起,蔚来高端行政车ET9上市

头条要闻

上海女子忍无可忍报警:家里被灌进70斤胶水 要价2万

头条要闻

上海女子忍无可忍报警:家里被灌进70斤胶水 要价2万

体育要闻

逆潮流而行!灰熊已成NBA最另类球队

娱乐要闻

赵丽颖化淡妆、唐嫣戴帽子,相差4岁状态不一样

财经要闻

山姆,又出事!网友:太吓人

汽车要闻

直面78S挑战 蔚来ET9售价66万元起

态度原创

时尚
手机
家居
艺术
游戏

山姆必买“宝藏好物”,我能回购一辈子!

手机要闻

OPPO 申请注册“ophone”商标

家居要闻

现代轻奢 新中式的和谐交响

艺术要闻

故宫珍藏的墨迹《十七帖》,比拓本更精良,这才是地道的魏晋写法

《燕云十六声》新武学"绳镖"实机:以柔克刚 软兵之王!

无障碍浏览 进入关怀版