Dart 2.7 添加了對擴展方法支持,以及一個用于處理帶有特殊字符的字符串的新程序包
① 擴展方式:能夠向任何類型,添加新的功能??
???任何類型??一切是對象谜诫,包括內(nèi)置類型攻旦,函數(shù)也是對象
② 擴展方法是靜態(tài)的??
????擴展方法是靜態(tài)解析和分派的,這意味著您不能在類型為的值上調(diào)用它們dynamic且预。在這里烙无,調(diào)用在運行時引發(fā)異常
[Code]
dynamic field = '1';
field?.parseInt();
→ Runtime exception: NoSuchMethodError
// 有效的 Code
var?field? = '1';
field?.parseInt();
③ 擴展可以具有類型變量??
???想象一下截酷,我們想定義一個擴展,List以使元素達到偶數(shù)索引合搅。我們希望此擴展適用于任何類型的列表灾部,并返回與輸入列表相同類型的新列表。我們可以通過使擴展名通用并將擴展名的類型參數(shù)應用于擴展名和擴展方法來做到這一點
[Code]
extension FancyList<T> on List<T> {
? List<T> get evenElements {
? ? return <T>[for (int i = 0; i < this.length; i += 2) this[i]];
? }
}
④擴展方法實際上是擴展成員 ?
????我們稱之為功能擴展方法从藤,因為如果您在其他編程語言中使用了相應的語言功能锁蠕,則這是熟悉的術(shù)語。但是在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分