[英]Dart factory (constructor) vs. static method; e.g., why is int.parse() not a factory constructor?
Dart樣式指南建議使用構造函數而不是靜態方法來創建實例 ,因為Dart中的命名構造函數和工廠構造函數為您提供了其他語言中靜態方法的所有靈活性,同時仍允許調用點看起來像常規構造函數調用 ”。
有沒有技術上的原因,因為已經將int.parse()
和double.parse()
為靜態方法而不是工廠構造函數?
更一般地說,選擇在Dart中通過靜態(工廠)方法編寫工廠構造函數的指導原則是什么?
在谷歌群組中挖掘了一段時間后,我確實找到了一個正式的解釋: 鏈接到群組討論
出於存檔目的,此處引用鏈接中引用的文本:
我想過把它變成一個構造函數,但是對於int或double值感覺不對。
我認為“解析”作為一個實用函數而不是構造函數,可能因為int和double實際上沒有構造函數。 你沒有創建一個整數,你發現它。
此外,目前檢查字符串是否為數字文字的唯一方法是調用解析並查看它是否拋出(但我對此並不完全滿意!),並且我不喜歡構建器除了編程之外什么都沒有錯誤。
而且你不必以這種方式在它面前寫“新”,因為沒有特別的收獲。
沒有一個硬性原因使它顯然不是構造函數,而是一堆較小的問題,這些問題共同使我更喜歡它作為靜態函數。
對我的“表現目的”理論來說太過分了。 那好吧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.