吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

dart語言的變量聲明與初始化

CHANBAEK ? 來源:myfreax ? 作者:myfreax ? 2022-12-08 16:47 ? 次閱讀

變量是每一們語言的基礎,在Dart中所有變量都是對象,并且都有一個初始化的值null。

雖然在Dart中的變量的類型聲明的是可選的,但是Dart建議在變量使用類型聲明。

在本教程,我們將說明如何dart語言的變量聲明與初始化,以及變量的默認值。

變量聲明與初始化

Dart 變量存儲的是引用,代碼var name = 'Bob';name變量引用的是一個 String對象 值是Bob

這個name變量會被Dart 類型系統推斷為String,如果你不確定的變量的類型,你也可以將變量的類型指定為Object或者dynamic類型。

另一種選擇為變量是顯式聲明類型,這是Dart 推薦的方式變量聲明和初始化的方式。

var name = 'Bob';
dynamic name = 'Bob';
String name = 'Bob';

Dart 類型注釋是可選的,這里的類型注釋,可以是其它語言類型聲明或者類型定義。如果你是沒有開發經驗的新手,可以不必正確理解以下內容。

如果省略類型注釋,Dart 會嘗試根據上下文推斷類型。有時它沒有足夠的信息來推斷出正確類型。

當發生這種情況時,Dart 有時會報告錯誤,但通常會聲明dynamic,這個過程通常稱為類型隱式轉換。隱式轉換為dynamic使代碼看起來是推斷是正確且安全的。

但實際完全禁用了類型檢查。下面的規則在推斷失敗時要求指定類型來避免這種情況。

類型推斷是一種強大的工具,可以讓您省去編寫無趣的類型工作。它使讀者的注意力集中在代碼本身的行為上。

顯式類型也是健壯、可維護代碼的關鍵部分。它們定義API的靜態規范并創建邊界以記錄和強制允許哪些類型的值允許的。

當然,類型推斷不是魔法。有時推理成功并選擇了一種類型,但它可能不是您想要的類型。

常見的情況是從變量的初始化中推斷出過于精確的類型。而您又打算稍后將其他類型的值分配給變量,在這種情況下,您必須顯式地聲明類型。

變量默認值

未初始化的變量都有一個初始值null,如果你沒有選擇null空安全,那么每個變量都有一個可以為null類型。

即使在初始化變量類型指定類型為數值,也是初始化為null值。因為在Dart中一切都是對象。

如果開啟null安全,則必須在聲明變量時初始化變量的值。但在Dart 2.1.2添加late修改器允許在開啟null安全的情況預先聲明變量。

late修改器通常用于預先初始化不可為空的變量。惰性初始化一個變量。

int lineCount;
int lineCount = 0;
late String description;

Final 與 const

如果你一直不打算改變變量,則可以將變量聲明為final或者constfinal變量只可以賦值一次。

常量變量是編譯時的常量,也就是即隱式的finalfinal在類中使用之前必須被初始化。

const關鍵字不僅用于聲明常量變量,例如代碼const baz = [];。您還可以使用它來創建常量值,例如代碼var foo = const [];,以及聲明創建常量值的構造函數。

final name = 'Bob'; // 沒有類型聲明
final String nickname = 'Bobby';

var foo = const [];
final bar = const [];
const baz = []; // 相當于 const []

您可以改變不是finalconst變量的值,即使變量有一個const值。

例如代碼var foo = const [];不是一個常量變量但它具有常量值const [];。因此你可以修改變量foo的值。

但是如果你嘗試修改常量變量的值,Dart 將會拋出靜態分析錯誤Error: Constant variables can't be assigned a value。

例如代碼const baz = [];,假如你嘗試修改常量baz的值,運行代碼baz = [42];,Dart將會拋出錯誤。

結論

至此,你已經理解Dart 變量的初始化,變量的默認值,變量在開啟null空安全時必須初始化變量,或者使用late修改器進行聲明再初始化,最后理解常量變量,常量值以及final關鍵詞。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28463
  • 初始化
    +關注

    關注

    0

    文章

    50

    瀏覽量

    11948
  • Dart
    +關注

    關注

    0

    文章

    9

    瀏覽量

    1763
收藏 人收藏

    評論

    相關推薦

    字符型、指針型等變量該如何初始化

    在敲代碼的時候,我們會給變量一個初始值,以防止因為編譯器的原因造成變量初始值的不確定性。對于數值類型的變量往往
    發表于 09-23 11:50 ?2231次閱讀

    C語言中未初始化的局部變量到底是多少

    C語言中,未初始化的局部變量到底是多少?
    發表于 10-21 14:42 ?2071次閱讀

    使用SEGGER Embedded Studio編譯器發現變量無法自動初始化

    使用SEGGER Embedded Studio編譯器發現變量無法自動初始化, 例如聲明靜態變量static uint8_t i = 0;這種寫法i成了靜態
    發表于 01-11 14:21

    c語言初始化變量

    C語言中,未初始化的局部變量到底是多少?答案往往是:與編譯器有關。可能但不保證初始化為0。未確定。 總之,全部都是些一本正經的形而上答案,這很令人討厭。 其實,這個問題本身就是錯誤的問
    發表于 03-29 09:25

    【原創分享】變量初始化技巧

    由于在嵌入式系統中必須考慮程序規模的問題,因此,對程序中的變量初始化也需要進行慎重的考慮。在C語言中,基本數據結構(字符型、整型)的初始化相對簡單;數組、結構體屬于C
    發表于 09-08 15:28

    qboot跳轉APP,APP聲明全局變量時無法初始化

    1、程序添加了kawaii_mqtt軟件包2、聲明全局變量時進行初始化,程序無法跳轉3、聲明全局變量時不
    發表于 03-06 10:32

    如何設置STM32單片機非初始化數據變量不被零初始化

    一些產品,當系統復位后(非上電復位),可能要求保持住復位前RAM中的數據,用來快速恢復現場,或者不至于因瞬間復位而重啟現場設備。而keil mdk在默認情況下,任何形式的復位都會將RAM區的非初始化變量數據清零。
    發表于 01-02 15:56 ?8430次閱讀
    如何設置STM32單片機非<b class='flag-5'>初始化</b>數據<b class='flag-5'>變量</b>不被零<b class='flag-5'>初始化</b>

    你知道C之變量初始化的重要性?

    C之變量初始化的重要性
    發表于 05-15 16:46 ?1031次閱讀
    你知道C之<b class='flag-5'>變量</b><b class='flag-5'>初始化</b>的重要性?

    在51平臺下初始化文件的引入導致全局變量無法初始化的問題如何解決

    本文檔的主要內容詳細介紹的是在51平臺下初始化文件的引入導致全局變量無法初始化的問題如何解決。
    發表于 08-20 17:31 ?0次下載
    在51平臺下<b class='flag-5'>初始化</b>文件的引入導致全局<b class='flag-5'>變量</b>無法<b class='flag-5'>初始化</b>的問題如何解決

    使用51單片機進行有關變量初始化問題資料講解

    如果定義一個變量,不對這個變量進行初始化,其變量默認初值為0。雖然大部分正確,但也是在一定條件下,即所有程序中所有變量占用的字節之和要小于1
    發表于 08-13 17:32 ?0次下載
    使用51單片機進行有關<b class='flag-5'>變量</b>及<b class='flag-5'>初始化</b>問題資料講解

    鴻蒙內核源碼:內核空間是怎么初始化的?

    data段 該段用于存儲初始化的全局變量初始化為0的全局變量出于編譯優化的策略還是被保存在BSS段。
    的頭像 發表于 04-26 14:43 ?1925次閱讀
    鴻蒙內核源碼:內核空間是怎么<b class='flag-5'>初始化</b>的?

    EE-88:使用21xx編譯器初始化C語言中的變量

    EE-88:使用21xx編譯器初始化C語言中的變量
    發表于 05-19 21:08 ?1次下載
    EE-88:使用21xx編譯器<b class='flag-5'>初始化</b>C<b class='flag-5'>語言</b>中的<b class='flag-5'>變量</b>

    實戰經驗 | Keil、IAR、CubeIDE 中變量不被初始化方法

    關鍵詞:不被初始化,編譯環境 目錄預覽 1、前言 2、IAR 實現變量初始化方法 3、Keil 實現變量不被初始化方法 4、CubeIDE
    的頭像 發表于 11-24 18:05 ?4679次閱讀

    C語言編程時,各種類型的變量該如何初始化

    C語言編程時,各種類型的變量該如何初始化? 在C語言中,每個變量都需要在使用之前進行初始化
    的頭像 發表于 12-07 13:53 ?1329次閱讀

    字符型、指針型等變量等該如何初始化

     對于數值類型的變量往往初始化為0,但對于其他類型的變量,如字符型、指針型等變量等該如何初始化呢?
    的頭像 發表于 03-18 11:02 ?1621次閱讀
    莆田棋牌迷游戏中心| 商丘市| 百家乐官网有不有作弊| 百家乐官网顶| 宝马会线上娱乐| 大佬百家乐娱乐城| 粤港澳百家乐官网娱乐| 大发888bet| 玩百家乐技巧博客| 免费百家乐官网在线| 新全讯| 威尼斯人娱乐城| 游戏机百家乐的技术| 百家乐官网现场投注平台| 舟山星空棋牌官网| 百家乐分析仪有真的吗| 百家乐官网套路| 百家乐官网怎么投注| 马牌| 大发888出纳柜台| 百家乐网投打法| 百家乐官网路单生| 鄂托克旗| 爱马仕赌球| 百家乐胜率被控制| 赢家百家乐官网的玩法技巧和规则| 至尊百家乐官网节目单| 百家乐官网赢的技巧| 十三张娱乐城开户| 大发888集团| 大发888备用网站| 大发888存款| 威尼斯人娱乐百利宫| 旅百家乐赢钱律| 威尼斯人娱乐城 196| 百家乐官网sxcbd| 澳门百家乐官网赢钱秘| 娱乐城百家乐官网打不开| 伟德百家乐官网下载| 威尼斯人娱乐场积分| 真人版百家乐试玩|