一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

dart語(yǔ)言的變量聲明與初始化

CHANBAEK ? 來(lái)源:myfreax ? 作者:myfreax ? 2022-12-08 16:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

變量是每一們語(yǔ)言的基礎(chǔ),在Dart中所有變量都是對(duì)象,并且都有一個(gè)初始化的值null。

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

在本教程,我們將說(shuō)明如何dart語(yǔ)言的變量聲明與初始化,以及變量的默認(rèn)值。

變量聲明與初始化

Dart 變量存儲(chǔ)的是引用,代碼var name = 'Bob';name變量引用的是一個(gè) String對(duì)象 , 值是Bob

這個(gè)name變量會(huì)被Dart 類(lèi)型系統(tǒng)推斷為String,如果你不確定的變量的類(lèi)型,你也可以將變量的類(lèi)型指定為Object或者dynamic類(lèi)型。

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

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

Dart 類(lèi)型注釋是可選的,這里的類(lèi)型注釋?zhuān)梢允瞧渌Z(yǔ)言類(lèi)型聲明或者類(lèi)型定義。如果你是沒(méi)有開(kāi)發(fā)經(jīng)驗(yàn)的新手,可以不必正確理解以下內(nèi)容。

如果省略類(lèi)型注釋?zhuān)珼art 會(huì)嘗試根據(jù)上下文推斷類(lèi)型。有時(shí)它沒(méi)有足夠的信息來(lái)推斷出正確類(lèi)型。

當(dāng)發(fā)生這種情況時(shí),Dart 有時(shí)會(huì)報(bào)告錯(cuò)誤,但通常會(huì)聲明dynamic,這個(gè)過(guò)程通常稱(chēng)為類(lèi)型隱式轉(zhuǎn)換。隱式轉(zhuǎn)換為dynamic使代碼看起來(lái)是推斷是正確且安全的。

但實(shí)際完全禁用了類(lèi)型檢查。下面的規(guī)則在推斷失敗時(shí)要求指定類(lèi)型來(lái)避免這種情況。

類(lèi)型推斷是一種強(qiáng)大的工具,可以讓您省去編寫(xiě)無(wú)趣的類(lèi)型工作。它使讀者的注意力集中在代碼本身的行為上。

顯式類(lèi)型也是健壯、可維護(hù)代碼的關(guān)鍵部分。它們定義API的靜態(tài)規(guī)范并創(chuàng)建邊界以記錄和強(qiáng)制允許哪些類(lèi)型的值允許的。

當(dāng)然,類(lèi)型推斷不是魔法。有時(shí)推理成功并選擇了一種類(lèi)型,但它可能不是您想要的類(lèi)型。

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

變量默認(rèn)值

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

即使在初始化變量類(lèi)型指定類(lèi)型為數(shù)值,也是初始化為null值。因?yàn)樵贒art中一切都是對(duì)象。

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

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

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

Final 與 const

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

常量變量是編譯時(shí)的常量,也就是即隱式的final,final在類(lèi)中使用之前必須被初始化。

const關(guān)鍵字不僅用于聲明常量變量,例如代碼const baz = [];。您還可以使用它來(lái)創(chuàng)建常量值,例如代碼var foo = const [];,以及聲明創(chuàng)建常量值的構(gòu)造函數(shù)。

final name = 'Bob'; // 沒(méi)有類(lèi)型聲明
final String nickname = 'Bobby';

var foo = const [];
final bar = const [];
const baz = []; // 相當(dāng)于 const []

您可以改變不是final,const變量的值,即使變量有一個(gè)const值。

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

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

例如代碼const baz = [];,假如你嘗試修改常量baz的值,運(yùn)行代碼baz = [42];,Dart將會(huì)拋出錯(cuò)誤。

結(jié)論

至此,你已經(jīng)理解Dart 變量的初始化,變量的默認(rèn)值,變量在開(kāi)啟null空安全時(shí)必須初始化變量,或者使用late修改器進(jìn)行聲明再初始化,最后理解常量變量,常量值以及final關(guān)鍵詞。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    614

    瀏覽量

    28967
  • 初始化
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

    12115
  • Dart
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    1837
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    定義IO初始化結(jié)構(gòu)體

    由上述IOPORT相關(guān)功能的枚舉類(lèi)型我們可以知道,在對(duì)IOPORT模塊進(jìn)行初始化時(shí)需要根據(jù)情況配置它們。因此我們定義一個(gè)IOPORT初始化的結(jié)構(gòu)體類(lèi)型IOPORT_Init_t,它的成員包括了由上述所有枚舉類(lèi)型所聲明
    的頭像 發(fā)表于 07-16 16:26 ?565次閱讀

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

    在敲代碼的時(shí)候,我們會(huì)給變量一個(gè)初始值,以防止因?yàn)榫幾g器的原因造成變量初始值的不確定性。對(duì)于數(shù)值類(lèi)型的變量往往
    發(fā)表于 09-23 11:50 ?2410次閱讀

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

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

    c語(yǔ)言初始化變量

    C語(yǔ)言中,未初始化的局部變量到底是多少?答案往往是:與編譯器有關(guān)??赡艿槐WC初始化為0。未確定。 總之,全部都是些一本正經(jīng)的形而上答案,這很令人討厭。 其實(shí),這個(gè)問(wèn)題本身就是錯(cuò)誤的問(wèn)
    發(fā)表于 03-29 09:25

    【原創(chuàng)分享】變量初始化技巧

    由于在嵌入式系統(tǒng)中必須考慮程序規(guī)模的問(wèn)題,因此,對(duì)程序中的變量初始化也需要進(jìn)行慎重的考慮。在C語(yǔ)言中,基本數(shù)據(jù)結(jié)構(gòu)(字符型、整型)的初始化相對(duì)簡(jiǎn)單;數(shù)組、結(jié)構(gòu)體屬于C
    發(fā)表于 09-08 15:28

    變量初始化的基本原則

    一、變量初始化變量初始化的基本原則為:可綜合代碼中完成內(nèi)部變量初始化,Testbench中完成
    發(fā)表于 01-19 07:07

    qboot跳轉(zhuǎn)APP,APP聲明全局變量時(shí)無(wú)法初始化?

    1、程序添加了kawaii_mqtt軟件包2、聲明全局變量時(shí)進(jìn)行初始化,程序無(wú)法跳轉(zhuǎn)3、聲明全局變量時(shí)不
    發(fā)表于 03-06 10:32

    如何設(shè)置STM32單片機(jī)非初始化數(shù)據(jù)變量不被零初始化

    一些產(chǎn)品,當(dāng)系統(tǒng)復(fù)位后(非上電復(fù)位),可能要求保持住復(fù)位前RAM中的數(shù)據(jù),用來(lái)快速恢復(fù)現(xiàn)場(chǎng),或者不至于因瞬間復(fù)位而重啟現(xiàn)場(chǎng)設(shè)備。而keil mdk在默認(rèn)情況下,任何形式的復(fù)位都會(huì)將RAM區(qū)的非初始化變量數(shù)據(jù)清零。
    發(fā)表于 01-02 15:56 ?8782次閱讀
    如何設(shè)置STM32單片機(jī)非<b class='flag-5'>初始化</b>數(shù)據(jù)<b class='flag-5'>變量</b>不被零<b class='flag-5'>初始化</b>

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

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

    在51平臺(tái)下初始化文件的引入導(dǎo)致全局變量無(wú)法初始化的問(wèn)題如何解決

    本文檔的主要內(nèi)容詳細(xì)介紹的是在51平臺(tái)下初始化文件的引入導(dǎo)致全局變量無(wú)法初始化的問(wèn)題如何解決。
    發(fā)表于 08-20 17:31 ?0次下載
    在51平臺(tái)下<b class='flag-5'>初始化</b>文件的引入導(dǎo)致全局<b class='flag-5'>變量</b>無(wú)法<b class='flag-5'>初始化</b>的問(wèn)題如何解決

    使用51單片機(jī)進(jìn)行有關(guān)變量初始化問(wèn)題資料講解

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

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

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

    實(shí)戰(zhàn)經(jīng)驗(yàn) | Keil、IAR、CubeIDE 中變量不被初始化方法

    關(guān)鍵詞:不被初始化,編譯環(huán)境 目錄預(yù)覽 1、前言 2、IAR 實(shí)現(xiàn)變量初始化方法 3、Keil 實(shí)現(xiàn)變量不被初始化方法 4、CubeIDE
    的頭像 發(fā)表于 11-24 18:05 ?5761次閱讀

    C語(yǔ)言編程時(shí),各種類(lèi)型的變量該如何初始化?

    C語(yǔ)言編程時(shí),各種類(lèi)型的變量該如何初始化? 在C語(yǔ)言中,每個(gè)變量都需要在使用之前進(jìn)行初始化。
    的頭像 發(fā)表于 12-07 13:53 ?1865次閱讀

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

     對(duì)于數(shù)值類(lèi)型的變量往往初始化為0,但對(duì)于其他類(lèi)型的變量,如字符型、指針型等變量等該如何初始化呢?
    的頭像 發(fā)表于 03-18 11:02 ?2138次閱讀