闲话Dart精髓语法3--函数篇

闲话Dart精髓语法2--集合篇 - 简书

Dart Logo

好了, 第三波我们来瞜一眼Dart里面的函数和操作符. 就是Functions和Operators. 这部分其实所有现代语言在语法上都很相像, 这篇我们依然以kotlin为比较, 过一遍注意事项.

好了, 分隔线后我们进入正题. 


1. Runes:

这里带一笔上期的一个漏网之鱼. runes, 其实算是Dart对包含表情(emoji)的一系列特殊字符的单独定义,官方说法是for expressing Unicode characters in a string. 主要是它算是string的一个变种. string本身定义是UTF-16, 而runes是UTF-32.

举例: The laughing emoji (😆) is \u{1f600}.

Dart提供一系列的strings和runes的转换. 

转换runes

这个对于前端语言还是很有用的. 毕竟在我们用Flutter构建app的时候, 经常还是需要用到特殊字符.

2. Functions:

    a. Dart是OO型的语言, 因此Dart也和Kotlin这样的现代语言一样, Function本身是可以作为类型assign给变量或是用于传递的.

    b. Dart的Functions是可以省略类型的. 当然Dart本身不建议我们这样做. 像下面的两个对于Functions写法实际上是一样的.

声明return类型
未声明return类型

    c. 简写格式, 这个Flutter里在main函数里runApp啊, 或是createState啊, 都是经常性会用到的.  =>表达式就是{ return expr; }的简写. 这里说下kotlin的表达, kotlin是用=来实现. 也是非常常用的写法.

函数简写

    d. 一个function可以有两种类型的参数, 一种是required, 另一种是optional. required要放在前面, optional要放在required之后. 像下列的实例中, [String device]就是optional参数.

参数的两种类型

    e. Default parameter values. Dart的function是可以预先设置default值的. 简单的使用=来进行预先赋值即可.

Default parameter values

    f. The main() function. 主函数. 这里要多说一下, 因为主函数在Flutter里也是非常非常重要的. 在Dart里, main()就是我们的入口函数. 是每个app的top-level. 当然这里的main函数和java的main函数一样, 是可以接收arguments, 以List<String>的形式. 

    g. 我们可以把一个函数直接传给另一个函数. 这个在我们对于集合类的变化是经常经常用到的. 这也是流式写法的核心之一. 在java8以后, 以及kotlin上都是得到了很完美的实现. Dart这里当然也是我们的重中之重. 

    h. Anonymous functions. 这个也要特别说明一下, 因为在Flutter里我们也经常用到. 像setState(), onTapDown(), 如果我们并不想要把一个函数声明出来, 就可以用这种匿名表达的形式. 

Anonymous functions code block写法
Anonymous functions举例

    i. Lexical scope. 简单来说, 在Dart里, 对于nestedFunction的情况, 内层函数是可以调用外层函数的变量的. 这点和kotlin一样. 

    j. Return values. 对于一个函数来说, 如果各位亲没有明确声明他的return的话, return值就是null. 像foo() {} 这个函数的返回值就是null.

    k. Operators. 很多基本的操作符我这里就不一一阐述了. 因为和java没有什么大不同, 大家可以直接到官方教程里面过一遍即可. 这里突出标注一下这几个: Type test operators, if null, assignment中的??=和cascade.

    k-1: Type test operators. 像java的instanceof和kotlin的is. Dart的type检查操作如下表. 

Type test operators

    k-2: if null. 如果一个表达式为null, 之后应该怎样. 我们用??来定义.

if null

    k-3: assignment中的??=. 这个很有意思. 指的是, 只有一个变量一开始是null的时候, 才会被赋值. 这个可以让我们大大简写我们的初始化的逻辑或是做instance的逻辑.

??=

    k-4: cascade. 这个用起来更爽的东东要更加深深的mark下. cascade的翻译是串联. 为什么好用呢? 就是他可以实现我们一系列的操作. 这个和对集合的变换不同, 是对于一个object本身不停地一序列操作的写法. 像下面两种写法是一样的:

cascade写法
非cascade写法

cascade写法写习惯后, 爽到飞起有没有~

好了, 今天就到这里了, 第三波因为闲话的是函数, 所以内容比较多. 希望大家看完没有犯困. LOL 

希望大家学完语法可以去官方的Dart pad或是自己的Flutter上多练习一下, 毕竟实践是检验真理的唯一标准.

下一篇让我们一起来过一下逻辑操作和异常.

欧了, 谢谢观赏, 大家加油!

闲话Dart精髓语法4--逻辑操作篇 - 简书

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 闲话Dart精髓语法1--基本篇 - 简书 第二波我们来聊一聊集合, 集合就是我们通俗的collection. 这...
    西出玉门东望长安阅读 4,864评论 2 3
  • 此文章是v1.0+时编写,年代久远,小心有毒,谨慎食用!!! 一些重要概念 所有的东西都是对象,所有的对象都是类的...
    soojade阅读 10,047评论 2 27
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,171评论 9 118
  • flutter环境和运行环境搭建好之后,可以开始撸码了,然而当你打开VScode,在打开项目文件夹后,摆在你面前的...
    燃烧的鱼丸阅读 14,077评论 8 24
  • 停用就没效果害怕护肤品依赖?别逗了 有一种声音一直在质疑:这个用了会不会有依赖?停用后呢?会不会不用皮肤又打回原形...
    袁梦阅读 506评论 0 1