日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Dart基础学习03--方法的使用

發(fā)布時(shí)間:2025/3/14 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dart基础学习03--方法的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.本文主要講一下Dart中的方法是怎么定義的,下面先看一個(gè)簡(jiǎn)單的例子:

void printNumber(num number) {print('The number is $number.'); }

2.雖然Dart的編程規(guī)范推薦定義方法是要明確變量類型,但其實(shí)上面的代碼我們完全可以寫(xiě)作:

printNumber(number) { // Omitting types is OK.print('The number is $number.'); }

本人建議還是使用第一種吧,代碼的可讀性比較強(qiáng)。

3.如果方法的方法體只有一個(gè)表達(dá)式,如上面這段代碼,可以寫(xiě)成:

void printNumber(num number) =>print('The number is $number.');

這樣是不是很高大上呢?有種lambda表達(dá)式的感覺(jué)。這里需要注意的是當(dāng)方法體是一個(gè)聲明語(yǔ)句的時(shí)候就不能這樣使用了,如下面這段代碼就無(wú)法使用這種簡(jiǎn)寫(xiě):

printNumber(number) { // Omitting types is OK.var N = number * 2 ; }

4.Dart中方法的定義也十分簡(jiǎn)單:

printNumber(2333);

5.Dart方法的參數(shù)有兩種類型,必須參數(shù)和可選參數(shù),其中必須參數(shù)定義在參數(shù)列表的前面部分,可選參數(shù)定義在參數(shù)列表的剩余部分。

可選參數(shù)

可選參數(shù)又可以分為:可選命名參數(shù)和可選位置參數(shù)。同一個(gè)參數(shù)只能是可選命名參數(shù)或可選位置參數(shù),不能兼具兩者的功能。
同時(shí)可選參數(shù)可以設(shè)定默認(rèn)值,如沒(méi)有設(shè)定默認(rèn)值則相當(dāng)于null。

可選命名參數(shù)

可選命名參數(shù)顧名思義,就是在給其賦值的時(shí)候通過(guò)參數(shù)名來(lái)賦值。
可選命名參數(shù)使用{param1, param2, …}這種形式定義,如下:

enableFlags({bool bold:false, bool hidden:true}) {// ... }

可選命名參數(shù)使用:設(shè)置默認(rèn)值。
可選命名參數(shù)的調(diào)用方式如下:

enableFlags(bold: true, hidden: false);

可選位置參數(shù)

可選位置參數(shù)與可選命名參數(shù)類似,不過(guò)它是通過(guò)位置來(lái)賦值的。
可選位置參數(shù)使用[]包裹可選位置參數(shù)列表,與可選命名參數(shù)不同的是可選位置參數(shù)通過(guò)=來(lái)設(shè)置默認(rèn)值:

String say(String from, String msg,[String device = 'carrier pigeon', String mood]) {var result = '$from says $msg';if (device != null) {result = '$result with a $device';}if (mood != null) {result = '$result (in a $mood mood)';}return result; }assert(say('Bob', 'Howdy') =='Bob says Howdy with a carrier pigeon');

需要注意的是在調(diào)用包含可選位置參數(shù)的方法時(shí),一定要根據(jù)可選位置參數(shù)的位置進(jìn)行賦值。

main方法

在Dart中所有的程序都必須包含main方法來(lái)作為程序的入口。main方法的返回值是void并且它有一個(gè)List類型的可選參數(shù)。下面是Dart在Web應(yīng)用中的主函數(shù)寫(xiě)法:

void main() {querySelector("#sample_text_id")..text = "Click me!"..onClick.listen(reverseText); } 注意:..操作符可以用于對(duì)單個(gè)對(duì)象進(jìn)行多重操作。

下面這個(gè)例子是Dart在命令行程序中的使用范例:

void main(List<String> arguments) {print(arguments);assert(arguments.length == 2);assert(int.parse(arguments[0]) == 1);assert(arguments[1] == 'test'); }

方法即對(duì)象

在Dart中你可以將方法作為參數(shù)傳遞給另一個(gè)方法:

printElement(element) {print(element); }var list = [1, 2, 3];// Pass printElement as a parameter. list.forEach(printElement);

同樣的,可以將方法賦值給一個(gè)變量:

var loudify = (msg) => '!!! ${msg.toUpperCase()} !!!'; assert(loudify('hello') == '!!! HELLO !!!');

語(yǔ)法范圍

在Dart中方法可以嵌套,并且內(nèi)層方法可以訪問(wèn)外層方法定義的變量:

var topLevel = true;main() {var insideMain = true;myFunction() {var insideFunction = true;nestedFunction() {var insideNestedFunction = true;assert(topLevel);assert(insideMain);assert(insideFunction);assert(insideNestedFunction);}} }

語(yǔ)法閉包

閉包的作用是即使方法在原先聲明范圍外使用,方法內(nèi)部的變量都是可訪問(wèn)的:

Function makeAdder(num addBy) {return (num i) => addBy + i; }main() {// 創(chuàng)建一個(gè)+2方法.var add2 = makeAdder(2);// 創(chuàng)建一個(gè)+4方法.var add4 = makeAdder(4);assert(add2(3) == 5);assert(add4(3) == 7); }

在上面這段代碼中,add2,add4這兩個(gè)方法在main方法中使用,但他們卻可以訪問(wèn)addBy 這個(gè)變量。這就是語(yǔ)法閉包的意思。

方法的等價(jià)判斷

下面這個(gè)例子用于展示頂層方法,靜態(tài)方法和類成員方法(實(shí)例方法)的等效判斷:

foo() {} // A top-level functionclass SomeClass {static void bar() {} // A static methodvoid baz() {} // An instance method }main() {var x;// Comparing top-level functions.x = foo;assert(foo == x);// Comparing static methods.x = A.bar;assert(A.bar == x);// Comparing instance methods.var v = new A(); // Instance #1 of Avar w = new A(); // Instance #2 of Avar y = w;x = w.baz;// These closures refer to the same instance (#2),// so they're equal.assert(y.baz == x);// These closures refer to different instances,// so they're unequal.assert(v.baz != w.baz); }

返回值

所有的Dart方法都有返回值,若在代碼中沒(méi)有返,則返回值為null。

Dart的方法基本使用就講到這里,更多的Dart學(xué)習(xí)內(nèi)容和相關(guān)源碼都會(huì)在github上的DartNovel開(kāi)源項(xiàng)目進(jìn)行同步,歡迎關(guān)注。

轉(zhuǎn)載于:https://www.cnblogs.com/zqlxtt/p/4825414.html

總結(jié)

以上是生活随笔為你收集整理的Dart基础学习03--方法的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。