<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
https://www.freecodecamp.org/news/constructors-in-dart
https://stackoverflow.com/questions/52299304/dart-advantage-of-a-factory-constructor-identifier
https://dash-overflow.net/articles/factory/
https://flutterigniter.com/deconstructing-dart-constructors/
https://dart.dev/guides/language/language-tour
這篇文章是探討下 Dart 建構函式的一些使用技巧
首先
建構函式是用於初始化物件的特殊方法。在建立類的物件時呼叫建構函式。
預設情況
final ehe = MyClass(); // Creates an instanceclass MyClass { MyClass(); // Fires immediately when created (this guy is cons.) }
在建構函式中只有一個規則
也就是說;
與它的類名一樣命名它! !
好的,我們知道了! 但是…
我們具體有哪些型別的建構函式型別?
// Default Constructor // 預設什麼都不做 class User { String name = 'ehe'; User(); } /// // Constructor with parameters // 構造時初始變數 class User { String name; User(this.name); } /// // Constructor with the initial method // 建構函式內寫入你的邏輯 class User { String name; User(this.name) { // do some magic } } / // Constructor with assertion // 使用 Asserts 去檢查你的規則 class User { String name; User(this.name) : assert(name.length > 3); } // Constructor with initializer // 初始化你的變數 class User { static String uppercase(String e) => e.toUpperCase(); String name; User(name) : name = yell(name); static String yell(String e) => e.toUpperCase(); } / // Constructor with super() // override 變數 class Person { String id; Person(this.id); } class User extends Person { String name; User(this.name, String id) : super(id); } / // Constructor with this() // 命名建構函式 class User { String name; int salary; User(this.name, this.salary); User.worker(String name) : this(name, 10); User.boss(String name) : this(name, 9999999); }
您可以使用 _
建立私有建構函式,但是它的好處是什麼呢?
讓我們來看一個例子!
class Print { static void log(String message) => print(message); } Print.log('ehe'); // 你想寫一個像這樣的util,但有一個問題,因為你也可以建立一個我們不想要的範例。 Print(); // 在這種情況下,這是絕對不必要的 // 如何防止這種情況?答案是私有建構函式! class Print { Print._(); // 這將阻止建立範例 static void log(String message) => print(message); } Print(); // 這將給出現在的編譯時錯誤 Your instance is safe now!
所以基本上你可以阻止建立一個範例!
您可以在一個 class
中建立不同型別的範例
For example;
例如:
class User { String name; int salary; User.worker(this.name) : salary = 10; User.boss(this.name) : salary = 99999999; }
您可以很容易地清洗您的範例!
class User { String name; int salary; User.worker(this.name) : salary = 10; User.boss(this.name) : salary = 99999999; User._mafia(this.name) : salary = 9999999999999; }
除了玩笑之外,這是非常有幫助的!
例如,您可以使用私有建構函式建立單例物件!
class User { User._privateConstructor(); static final User instance = User._privateConstructor(); }
注意
你可以在一些專案中看到 _internal
內部關鍵字。沒什麼特別的。_internal construction 只是一個 ._internal 通常給類私有的建構函式的名稱(不需要這個名稱)。可以使用任何 Class._someName 結構建立一個私有建構函式)。
Const Constructor ー const Class()
您可以使用 const constructor!
建構函式使類變為不可變的!
常數建構函式是一種優化!編譯器使物件成為不可變的,為所有 Text('Hi!')
物件。ー Frank Treacy
const user = User('ehe'); class User { final String name; const User(this.name); }
我們說過施工人員不允許回來,你猜怎麼著?
工廠建造者可以!
工廠建造者還能做什麼?
您根本不需要建立一個新範例!您可以呼叫另一個建構函式或子類,甚至可以從快取返回一個範例!
最後,對工廠的小小警告!
無法呼叫超類建構函式 (super()
)
簡單的例子
class User { final String name; User(this.name); factory User.fromJson(Map<String, dynamic> json) { return User(json["name"]); } } // Singleton Example class User { User._internal(); static final User _singleton = Singleton._internal(); factory User() => _singleton; }
以上就是Android開發Dart Constructors建構函式使用技巧整理的詳細內容,更多關於Dart Constructors建構函式的資料請關注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