flutter開發(fā) dart定義方法與異常(三)

方法

int add(int i,int j) {
  return i + j;
}
//也可以選擇忽略類型(不推薦)
add( i, j) {
  return i + j;
}
//對(duì)于只有一個(gè)表達(dá)式的方法庭瑰,可以選擇使用縮寫語法來定義:
add(i, j) => i + j;
//在箭頭 (=>) 和分號(hào) (;) 之間只能使用一個(gè) 表達(dá)式

一等方法對(duì)象

? Dart 是一個(gè)真正的面向?qū)ο笳Z言,方法也是對(duì)象并且具有一種 類型 Function危喉。 這意味著宋渔,方法可以賦值給變量,也可以當(dāng)做其他方法的參數(shù)辜限』始穑可以把方法當(dāng)做參數(shù)調(diào)用另外一個(gè)方法

var list = [1,2,3];
//將 print 方法 作為參數(shù)傳遞給forEach
list.forEach(print);
//可以將方法賦值給一個(gè)變量 類型為Funcation
var p = print;
list.forEach(p);

我們可以通過typedef修飾方法,在開發(fā)中如果需要回調(diào)不需要java那樣使用抽象或者接口的方式薄嫡,使用方法就可以氧急。例如:

typedef void onClick();

class Button {
  void setOnlickListener(onClick listener) {
    listener();
  }
}

方法可以有兩種類型的參數(shù):必需的和可選的。 必需的參數(shù)需要在參數(shù)列表前面毫深, 后面再定義可選參數(shù)吩坝。

可選命名參數(shù)

可選命名參數(shù)可以代替java的重載的方式,他可以將方法的參數(shù)放到 {} 中就變成可選 命名參數(shù)

int add({int i, int j}) {
  if(i == null || j == null){
     return 0;
  }
  return i + j;
}

? 調(diào)用方法的時(shí)候哑蔫,可以使用這種形式 paramName: value 來指定命名參數(shù)钉寝。例如:

//無必須參數(shù)
add()
//選擇傳遞參數(shù)
add(i:1)
//位置無關(guān)
add(i:1, j:2)
add(j:1, i:2)

可選位置參數(shù)

? 把方法的參數(shù)放到 [] 中就變成可選 位置參數(shù)弧呐,傳值時(shí)按照參數(shù)位置順序傳遞

int add([int i, int j]) {
  if(i == null || j == null){
     return 0;
  }
  return i + j;
}
// 1賦值給i
add(1);
// 按照順序賦值
add(1,2);

默認(rèn)參數(shù)值

? 在定義方法的時(shí)候,可選參數(shù)可以使用 = 來定義可選參數(shù)的默認(rèn)值嵌纲。

int add([int i = 1, int j = 2]) => i + j;
int add({int i = 1, int j = 2}) => i + j;

匿名方法

? 沒有名字的方法俘枫,稱之為匿名方法,也可以稱之為 lambda 或者 closure 閉包逮走。匿名方法的聲明為:

([Type] param1, …) { 
  codeBlock; 
}; 

? 如:

var list = ['apples', 'oranges', 'grapes', 'bananas', 'plums'];
list.forEach((i) {
  print(list[i]);
});

異常

? 和 Java 不同的是鸠蚪,所有的 Dart 異常是非檢查異常。 方法不一定聲明了他們所拋出的異常师溅, 并且不要求你捕獲任何異常邓嘹。

? Dart 提供了 ExceptionError 類型, 以及一些子類型险胰。你還 可以定義自己的異常類型。但是矿筝, Dart 代碼可以 拋出任何非 null 對(duì)象為異常起便,不僅僅是實(shí)現(xiàn)了 Exception 或者Error 的對(duì)象。

throw new Exception('這是一個(gè)異常');
throw '這是一個(gè)異常';
throw 123;

? 與Java不同之處在于捕獲異常部分窖维,Dart中捕獲異常同樣是使用catch語句榆综,但是Dart中的catch無法指定異常類型。需要結(jié)合on來使用铸史,基本語法如下:

try {
    throw 123;
} on int catch(e){
    //使用 on 指定捕獲int類型的異常對(duì)象       
} catch(e,s){
    //函數(shù) catch() 可以帶有一個(gè)或者兩個(gè)參數(shù)鼻疮, 第一個(gè)參數(shù)為拋出的異常對(duì)象, 第二個(gè)為堆棧信息 ( StackTrace 對(duì)象)
    rethrow; //使用 `rethrow` 關(guān)鍵字可以 把捕獲的異常給 重新拋出
} finally{
    
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末琳轿,一起剝皮案震驚了整個(gè)濱河市判沟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌崭篡,老刑警劉巖挪哄,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異琉闪,居然都是意外死亡迹炼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門颠毙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斯入,“玉大人,你說我怎么就攤上這事蛀蜜】塘剑” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵涵防,是天一觀的道長(zhǎng)闹伪。 經(jīng)常有香客問我沪铭,道長(zhǎng),這世上最難降的妖魔是什么偏瓤? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任杀怠,我火速辦了婚禮,結(jié)果婚禮上厅克,老公的妹妹穿的比我還像新娘赔退。我一直安慰自己,他們只是感情好证舟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布硕旗。 她就那樣靜靜地躺著,像睡著了一般女责。 火紅的嫁衣襯著肌膚如雪漆枚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天抵知,我揣著相機(jī)與錄音墙基,去河邊找鬼。 笑死刷喜,一個(gè)胖子當(dāng)著我的面吹牛残制,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掖疮,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼初茶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了浊闪?” 一聲冷哼從身側(cè)響起恼布,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搁宾,沒想到半個(gè)月后桥氏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猛铅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年字支,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奸忽。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡堕伪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栗菜,到底是詐尸還是另有隱情欠雌,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布疙筹,位于F島的核電站富俄,受9級(jí)特大地震影響禁炒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霍比,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一幕袱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悠瞬,春花似錦们豌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凌外,卻和暖如春辩尊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背康辑。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工对省, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晾捏。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像哀托,于是被迫代替她去往敵國(guó)和親惦辛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一仓手、 Functions (函數(shù)) Dart 是一個(gè)真正的面向?qū)ο笳Z言胖齐,函數(shù)也是一個(gè)對(duì)象并且具有其類型:Funct...
    不喝咖啡的程序員閱讀 1,126評(píng)論 0 51
  • Dart重要概念:1,在變量中可以放置的所有東西都是對(duì)象嗽冒,而每個(gè)對(duì)象都是類的實(shí)例呀伙。無論數(shù)字、函數(shù)添坊、和null都是對(duì)...
    哥哥是歐巴Vitory閱讀 800評(píng)論 0 1
  • 上一篇: 一贬蛙、Flutter環(huán)境搭建下一篇: 三雨女、Flutter基礎(chǔ)—ListView入門 我之前只有OC開發(fā)經(jīng)...
    OOOlive閱讀 4,160評(píng)論 4 13
  • Flutter日漸火爆,因此在進(jìn)行Flutter學(xué)習(xí)前先學(xué)習(xí)一些其所使用的開發(fā)語言dart的基礎(chǔ)阳准,這篇文章主要學(xué)習(xí)...
    Samlss閱讀 10,939評(píng)論 2 28
  • “晚上的大街好熱鬧胺斩椤!” “恩野蝇,是啊讼稚±ㄈ澹” “走,我們?cè)偃タ纯窗扇裣耄魈煳覀兛赡芫鸵姴坏搅税镅啊!?男人聽聞之后皺了皺眉痛倚,...
    蘇捻晗閱讀 245評(píng)論 0 1