![](/img/trans.png)
[英]What does dollar sign $ mean at the beginning of the class name in Dart?
[英]What does the dollar sign mean when put before a class call in Flutter?
我是 Flutter/Dart 的初學者,我一直看到在調用類或方法之前出現美元符號,示例如下(在Floor包文檔中找到):
final database = await $FloorAppDatabase.databaseBuilder('app_database.db').build();
我已經搜索了很多,我能找到的 Dart 中美元符號的唯一含義是用於字符串插值,但情況似乎並非如此。
這不是 Flutter 或 Dart 約定——至少不是官方約定:官方 Dart 命名約定文檔(截至 2020 年 10 月)沒有提到在標識符名稱中使用$
。
但是,我確實知道其他編程語言的生態系統確實使用美元符號 ( Sigil ),而且我認為這種習慣是由您鏈接到的floor
數據庫的作者繼承的。 更具體地說, 在 Java 中,通常為由工具生成的類型名稱使用$
前綴而不是手寫(例如 ORM 實體類型),並且在 JavaScript 中使用 RxJS observables 的人將使用$
作為變量-名稱后綴。
由於$FloorDatabase
是一個類型名,而不是一個變量或成員名,我將假設它是從 Java 中$FloorDatabase
的一個習慣:
Java:
$
字符應該只用在機械生成的源代碼中,或者很少用於訪問遺留系統上預先存在的名稱。
因此,在這種情況下,您鏈接到的文檔中有一個線索:
使用生成的代碼。 要獲取數據庫實例,請使用生成的
$FloorAppDatabase
類,該類允許訪問數據庫構建器
所以這就是我的結論:它不是 Dart/Flutter 中的官方命名約定,而是 Java 中的命名約定,而且floor
的作者似乎是從 Java 繼承而來的。
(我個人希望他們沒有,因為它不是一個特別有用的指標——如果一個類型是創建一個工具而不是手寫的,這對消費應用程序有什么影響?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.