Dart 2.7 version 方法扩展(Extension methods)

Dart 2.7 添加了对扩展方法支持,以及一个用于处理带有特殊字符的字符串的新程序包


① 扩展方式:能够向任何类型,添加新的功能 ✔


 • 任何类型🈯一切是对象,包括内置类型,函数也是对象


② 扩展方法是静态的 ✔


 •  扩展方法是静态解析和分派的,这意味着您不能在类型为的值上调用它们dynamic。在这里,调用在运行时引发异常


[Code]

dynamic field = '1';

field .parseInt();

→ Runtime exception: NoSuchMethodError

// 有效的 Code

var field  = '1';

field .parseInt();


③ 扩展可以具有类型变量 ✔

 • 想象一下,我们想定义一个扩展,List以使元素达到偶数索引。我们希望此扩展适用于任何类型的列表,并返回与输入列表相同类型的新列表。我们可以通过使扩展名通用并将扩展名的类型参数应用于扩展名和扩展方法来做到这一点


[Code]

extension FancyList<T> on List<T> {

  List<T> get evenElements {

    return <T>[for (int i = 0; i < this.length; i += 2) this[i]];

  }

}


④扩展方法实际上是扩展成员 ✔


 •  我们称之为功能扩展方法,因为如果您在其他编程语言中使用了相应的语言功能,则这是熟悉的术语。但是在Dart中,此功能更为通用:它还支持使用新的getter,setter和operator扩展类。在上面的FancyList示例中,evenElements是一个吸气剂。这是添加用于移动字符串的运算符的示例


[Code]

extension ShiftString on String {

  String operator <<(int shift) {

    return this.substring(shift, this.length) + this.substring(0, shift);

  }

}


⑤ 安全子字符串处理⭕

📃文档没看懂,有时间在覆写。


⑥ 空安全预览⭕


📃文档没看懂,有时间在覆写。


Personal daily notebook(个人日常笔记本)

💻rebook的macPro

📅2019年12月13日🕥10点24分

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,053评论 0 2
  • The Inner Game of Tennis W Timothy Gallwey Jonathan Cape ...
    网事_79a3阅读 12,285评论 3 20
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,725评论 0 3
  • 昨天晚上失眠了,睡前喝了浓茶,而第二天早上还要很早赶火车,以为没问题,可怎么都睡不着了,看着手机上的时间慢慢流逝,...
    韬略小子阅读 262评论 0 1
  • 小鸟说日头已高 努力趁早 可风中的晨曦 刚刚崭露头角 小鸟说浓云已起 风雨飘摇 可沉闷的天气 依然酷暑难消 小鸟说...
    涛涛不绝82阅读 447评论 0 1