<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
https://dart.dev/guides/language/language-tour
今天的文章簡短地揭示了 Dart 語言所提供的很酷的特性。更多時候,這些選項對於簡單的應用程式是不必要的,但是當你想要通過簡單、清晰和簡潔來改進你的程式碼時,這些選項是一個救命稻草。
考慮到這一點,我們走吧。
Cascades (.., ?..) 允許你對同一個物件進行一系列操作。這通常節省了建立臨時變數的步驟,並允許您編寫更多流暢的程式碼。
var paint = Paint(); paint.color = Colors.black; paint.strokeCap = StrokeCap.round; paint.strokeWidth = 5.0; //above block of code when optimized var paint = Paint() ..color = Colors.black ..strokeCap = StrokeCap.round ..strokeWidth = 5.0;
使用 abstract 修飾符定義一個 _abstract 抽象類(無法範例化的類)。抽象類對於定義介面非常有用,通常帶有一些實現。
// This class is declared abstract and thus // can't be instantiated. abstract class AbstractContainer { // Define constructors, fields, methods... void updateChildren(); // Abstract method. }
在實現不總是建立類的新範例的建構函式時使用 factory 關鍵字。
class Logger { String name; Logger(this.name); factory Logger.fromJson(Map<String, Object> json) { return Logger(json['name'].toString()); } }
使用命名建構函式為一個類實現多個建構函式或者提供額外的清晰度:
class Points { final double x; final double y; //unnamed constructor Points(this.x, this.y); // Named constructor Points.origin(double x,double y) : x = x, y = y; // Named constructor Points.destination(double x,double y) : x = x, y = y; }
Mixin 是在多個類層次結構中重用類程式碼的一種方法。
要實現 implement mixin,建立一個宣告沒有建構函式的類。除非您希望 mixin 可以作為常規類使用,否則請使用 mixin 關鍵字而不是類。
若要使用 mixin,請使用後跟一個或多個 mixin 名稱的 with 關鍵字。
若要限制可以使用 mixin 的型別,請使用 on 關鍵字指定所需的超類。
class Musician {} //creating a mixin mixin Feedback { void boo() { print('boooing'); } void clap() { print('clapping'); } } //only classes that extend or implement the Musician class //can use the mixin Song mixin Song on Musician { void play() { print('-------playing------'); } void stop() { print('....stopping.....'); } } //To use a mixin, use the with keyword followed by one or more mixin names class PerformSong extends Musician with Feedback, Song { //Because PerformSong extends Musician, //PerformSong can mix in Song void awesomeSong() { play(); clap(); } void badSong() { play(); boo(); } } void main() { PerformSong().awesomeSong(); PerformSong().stop(); PerformSong().badSong(); }
型別別名ー是指代型別的一種簡明方式。通常用於建立在專案中經常使用的自定義型別。
typedef IntList = List<int>; List<int> i1=[1,2,3]; // normal way. IntList i2 = [1, 2, 3]; // Same thing but shorter and clearer. //type alias can have type parameters typedef ListMapper<X> = Map<X, List<X>>; Map<String, List<String>> m1 = {}; // normal way. ListMapper<String> m2 = {}; // Same thing but shorter and clearer.
在 Dart 2.7 中引入的擴充套件方法是一種向現有庫和程式碼中新增功能的方法。
//extension to convert a string to a number extension NumberParsing on String { int customParseInt() { return int.parse(this); } double customParseDouble() { return double.parse(this); } } void main() { //various ways to use the extension var d = '21'.customParseDouble(); print(d); var i = NumberParsing('20').customParseInt(); print(i); }
可選的位置引數
通過將位置引數包裝在方括號中,可以使位置引數成為可選引數。可選的位置引數在函數的參數列中總是最後一個。除非您提供另一個預設值,否則它們的預設值為 null。
String joinWithCommas(int a, [int? b, int? c, int? d, int e = 100]) { var total = '$a'; if (b != null) total = '$total,$b'; if (c != null) total = '$total,$c'; if (d != null) total = '$total,$d'; total = '$total,$e'; return total; } void main() { var result = joinWithCommas(1, 2); print(result); }
當您想要啟動一個 Future 時,建議的方法是使用 unawaited
否則你不加 async 就不會執行了
import 'dart:async'; Future doSomething() { return Future.delayed(Duration(seconds: 5)); } void main() async { //the function is fired and awaited till completion await doSomething(); // Explicitly-ignored //The function is fired and forgotten unawaited(doSomething()); }
以上就是Android開發Dart語言7個很酷的特點的詳細內容,更多關於Android開發Dart特點的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45