<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Dart是Google釋出的開源程式語言,是一種物件導向的語言。其主要應用是Flutter框架開發(Android、IOS),此外,也可以用在伺服器、指令碼、Web開發中。隨著Flutter3.0開始支援全平臺開發,Dart也可以實現桌面應用。
關於Dart的介紹不再細說。下面開始Dart的使用介紹
首先記住一點:在Dart中一切皆物件。
Dart中,所有變數參照的都是 物件,每個物件都是一個 類 的範例。
字串、數位、函數以及 null 都是物件。除去 null 以外(如果開啟了空安全), 所有的類都繼承於 Object 類。
Dart官方站點:dart.dev/
語句:
語句是程式碼中可以被執行的最小表達形式,類似於一句話。程式碼的執行是以語句為單位進行的。
比如宣告語句宣告一個變數或函數、賦值語句進行賦值、呼叫語句執行一個方法等。
宣告語句用來表示一個變數名或方法名。賦值語句則通常是給一個變數賦值。
通常變數的宣告和賦值是一起的,其語法是 型別 變數名 = 物件;
,相當於為物件取了個名字(變數名)。
String name = "張三"; // 宣告賦值語句
在宣告時進行賦值也就是變數的初始化。
變數是一個參照。由於Dart中“萬物皆物件”的原則,變數儲存的都是物件的參照,變數指向的是物件。
Dart中不可空物件在宣告時必須賦值(即必須初始化)。只有函數內部的本地變數才可以在宣告時不需要初始化。 這是Dart的空安全機制的限制。
如下,如果之生命String變數。
比如,函數內部的本地變數可以先宣告後賦值使用。
變數或數值,在程式設計中通常分為:可變數、不可變數(常數)、靜態變數(static)
預設宣告的變數都是可變數。
int a=10; a=a*2;
不可變數與可變數相對應,也叫常數,是初始化賦值(或第一次賦值)後不允許修改的變數。通過final
和const
修飾符進行限定。
通常推薦使用final
定義沒有修改需求的量。宣告後,final
量允許在執行期間根據需要賦值一次,之後不能修改。
const
通常用於修飾那些在程式執行前就已經確定的量。比如永恆不變的數位:圓周率、加速度等。需要在宣告時初始化賦值,之後不能修改。相對final
更為嚴格。
static
關鍵字用於修改一個類的靜態變數,只能用在類中。表示一個類上的變數。
在 Dart 中,未初始化以及可空型別的變數擁有一個預設的初始值 null。
即便數位也是如此,因為在 Dart 中一切皆為物件。
int? count; assert(count == null);
assert()
的呼叫將會在生產環境的程式碼中被忽略掉。
在開發過程中,assert(condition)
將會在 條件判斷 為 false 時丟擲一個異常。詳情請查閱 Assert。
在變數宣告時,也可以不同指定變數型別,而是使用Dart的型別推斷(Dart分析器analyzer
的型別推斷),自動推斷出一個變數的型別。【如果無法推斷出型別,將會作為dynamic
型別使用】
var
關鍵字用於普通變數的型別推斷。
比如下面,會自動推斷出變數a為String,b為int:
var a="a"; var b=1;
final
、const
用於修飾一個常數,但同時也可以起到var關鍵字的型別推斷的作用。
final
和const
變數只可以被賦值一次,之後不允許修改。
一個 const
變數是一個編譯時常數(const
變數同時也是 final
的),必須在宣告時賦值。final也可以稱作執行時常數。
void foo(){ final k; k=10; // k=20; // 只能賦值一次 const m="m"; // m="k"; // 不允許修改。 }
const可以用來建立常數值(值是常數,並不是前面的變數是常數。)
var foo = const []; foo=[1,2];
範例變數可以是final的但不可以是const。const要修飾類中的變數,必須在前面加上static
關鍵字。
class MyClass{ var a="a"; static const c=10; final f="final"; }
通常,不是很推薦使用型別推斷,因為對於編寫者和閱讀者,明確變數型別非常重要。
Dart 2.12引入了late修飾符,作用是:
第一個作用主要針對頂層變數或範例變數,即上面所說的不可空變數必須在宣告時初始化的情況。
如果只是想宣告一個變數,僅僅在用到時再賦值,並且Dart不允許這樣做時,可以在該變數宣告前新增late修飾符:
late String name_late; void foo(){ name_late='late變數'; print(name_late); }
即使宣告late變數時初始化賦值,也只會在該變數第一次使用時進行初始化。一般在以下兩種情況時使用懶初始化(lazy initialization
)非常方便:
比如下面的temperature
變數,如果從不使用,對應的開銷很大的readThermometer()
函數也將從不會被呼叫。
late String temperature = readThermometer(); // Lazily initialized.
is用於判斷變數的型別。如果物件是指定型別則返回 true。
if (p is Person) { p.Name = 'xxx'; }
as型別轉換:
(p as Person).Name = 'Bob';
Dart中一切皆物件
如果開啟了空安全,變數在未宣告為可空型別時不能為 null。
在型別後新增問號(?
)可將型別宣告為可空。如int?
表示整型或null。
可以通過Object?
、Object
、dynamic
顯式宣告一個任意型別。
dynamic
會推遲到執行時執行型別檢查,通常應避免使用 dynamic 型別。
Dart支援頂層函數(如main()
)、類或物件的函數(靜態方法和實體方法),也可以在函數內建立函數(函數巢狀或本地函數)
top-level functions
Dart支援頂層變數、類或物件的變數(靜態變數和範例變數)。範例變數也稱為欄位或屬性。
Instance variables are sometimes known as fields or properties
Dart語法中分為
expressions
)—— 有執行時值,即有返回值的是表示式。statements
)—— 沒有執行時值,即語句沒有返回值。一條語句通常包含一個或多個表示式,相反表示式不能直接包含語句。
例如,條件表示式 condition ? expr1 : expr2
的值可能是 expr1
或 expr2
。將其與 if-else
語句相比較,if-else
語句沒有值。
比如 a==null
、a!=null
就是一個條件表示式,其返回false或true值。
if(a==null){ }
就是一個if語句,或者條件語句。
Dart沒有public、protected和private類似的成員存取限定符
如果一個識別符號以下劃線 (_) 開頭,則表示該識別符號在庫內是私有的。
underscore (_)
註釋是程式設計中的說明性文字,對程式碼起到解釋說明的作用。不參與實際的程式碼執行。
//
/*
開始,*/
結尾,中間的內容為註釋DartPad頁面是一個可以在瀏覽器中執行Dart語言的線上工具。
對於一些測試程式碼、臨時執行的程式碼,可以直接在DartPad執行檢視。
也可以根據需要將DartPad
進入到自己的站點網頁內,方便檢視執行程式碼。
參考
以上就是Flutter入門學習Dart語言變數及基本使用概念的詳細內容,更多關於Flutter入門Dart語言變數的資料請關注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