dart語法之類的初始化列表、external、typedef 關(guān)鍵字

main(){
    // 可能用戶調(diào)用的時候 只穿了name,而沒有傳age,而我又需要有一個默認的age,這種情況用到初始化列表
   var p= Person("張三");
}
class Person{
      final String name;
      final int age;// 注意這里我用了final修飾age,意味著后面不能修改
      //為了滿足需要又默認的參數(shù)的話
     
     //  Person(this.name,{this.age=10});  //這種寫法可以,只是賦值的那里是不能用表達式
     
     Person(this.name,{int age}):this.age=age??10{
     }  
}

external :其作用是,將方法的聲明和方法的實現(xiàn)分離
在某個地方只有方法的聲明,而方法的實現(xiàn)由另外的關(guān)鍵字來實現(xiàn):@patch
方法的聲明和分離的好處是:可以針對不同的平臺,進行不同的實現(xiàn),例如IOS 是一套方案,android是一套方案


typedef :其作用是,修飾函數(shù)

main(List<String> args) {
  var demo1 = demo();
  print(demo1(20, 30));
}


// 封裝test函數(shù), 要求: 傳入一個函數(shù)
// 普通封裝一:這樣不嚴謹,因為函數(shù)返回值不確定,傳入值的類型也不確定
// void test(Function foo) {
//   foo("why");
// }

// 普通封裝二:這樣是可以的,只是閱讀性差
// void test(int foo(int num1, int num2)) {               
//   foo(20, 30);
// }     
// 調(diào)用的話就得按照這個形式 ,相當于函數(shù)簽名
//   test((num1,num2)){
 //    return num1*num2
//  }
 

//最佳封裝,其返回值是int,傳入值也是int
typedef Calculate = int Function(int num1, int num2);
void test(Calculate calc) {
  calc(20, 30);
}

//補充
//把函數(shù)作為返回值, 這里是返回了一個匿名函數(shù)
Calculate demo() {
  return (num1, num2) {
    return num1 * num2;
  };
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容