Dart語言基礎特性

###概述java

  • Dart是Google發佈的開源語言
  • Dart是面向對象編程語言
  • Dart目前可用於全平臺開發(Web開發,跨平臺Flutter開發,腳本或服務端開發)

變量

  1. 使用var觀景子進行申明,可賦予不一樣類型的值
var a = 10;
  print(a); //10
  var b = "str";
  print(b); //str
複製代碼

2.未被初始化,默認值爲null編程

var c ;
  print(c);//null
複製代碼
  1. final申明變量只能被賦值一次
final d = "yxjie";
//  d=10; //編譯器報錯
//  d="str";//編譯器報錯
複製代碼

常量

使用const申明的常量,爲編譯期常量bash

const a = 10 ; //不可變了
複製代碼

數據類型(內置數據類型)

  • 數值型(Number)【整型:int 浮點型:double】
數值型操做

1.運算符:+,-,*,/,~/(整除),% 2.經常使用屬性:isNaN,isEvent (是不是偶數),isOdd(是不是奇數)等 3.經常使用方法:abs(),round(),toInt(),toDouble()markdown

  • 字符串(String) 注:字符串內容比較使用== 【與java或Kotlin不同】,也是支持插值表達式的
  • 布爾型 (Boolean)
  • 列表 (List)
//三種建立方式  
var list=[1,2,3];
  var list2=const[1,'yxjie',true];
  var list3 = new List();
  list3.add("hahah");
  list3.insert(0, "yxjie");
  list3.remove("yxjie");
  list3.clear();
  list2.forEach(print);
複製代碼
  • 鍵值對(Map)
void main(){
  var map={1:"Dart",2:"Java",3:"Kotlin",4:4};
  var map2=const{1:"Dart",2:"Java",3:"Kotlin",4:4};
  var map3=new Map();
  map3[1]="hha";
  map3["2"]="lalal";
  print(map3.containsKey(2));
  print(map);
  print(map.length);
  print(map.containsKey(1));
  print(map.containsValue("java"));

  map3.forEach(pf);
}

void pf(key,value){
  //差值表達式
  print("key=\$key,value=\$value");
}
複製代碼

for語句

var list = [1,2,3,4];
  for(var i = 0;i < list.length;i++){
    print(i);
  }

  print('=====');

  for(var item in list){
    print(item);
  }
複製代碼

switch...case語句

  • 比較類型:num,String,編譯器常量,對象以及枚舉
  • 非空case必須有個break
  • default處理默認條件
  • continue跳轉制定標籤
var language = "Kotlin";

  switch (language) {
    D:
    case "java":
      print("java---");
      break;

    case "Kotlin":
      print("Kotlin---");
      continue D;
    default:
      print("Dart");
  }

  // 運行結果
  //Kotlin---
  //java---
複製代碼

方法

####方法特性閉包

  • 方法也是對象且類型爲Fuction
  • 返回值類型,參數類型均可省略(js相似)
  • 箭頭語法:=> a 是{return a},只支持一個表達式
  • 方法都有返回值,如不指定,默認返回null
//標準定義
void getPerson(String name,int age){
  print("name=\$name,age=\$age");
}

// 返回值參數類型均可以省略
getPerson2(name,age){
  return "name=\$name,age=\$age";
}

// 箭頭函數
getPerson3(name,age)=>"name=\$name,age=\$age";
複製代碼

可選參數

  • 可選命名參數:{param1,param2,...}
  • 可選位置參數:[param1,param2,...]
void main(){
  getPerson("Yxjie");
  getPerson("yxjie",age: 27);
  //輸出結果
  //name=Yxjie,age=null
  //name=yxjie,age=2

  getPerson2("Jerry");
  getPerson2("jerry",18);
  getPerson2("Jerry",18,"boy");
  //運行結果
  //name=Jerry,age=null,gender=null
  //name=jerry,age=18,gender=null
  //name=Jerry,age=18,gender=boy
}

getPerson(name,{age}){
  print("name=\$name,age=\$age");
}

getPerson2(name,[age,gender])=> print("name=\$name,age=\$age,gender=\$gender");
複製代碼

默認參數

  • 使用= 給參數設置默認值(與Kotlin相似)
  • 默認參數值只能是編譯時常量
void main(){
  getPerson("yxjie");
  getPerson("yxjie",age: 28);
  //運行結果
  //name=yxjie,age=18
  //name=yxjie,age=28
}

getPerson(name,{age=18}){
  print("name=\$name,age=\$age");
}
複製代碼

方法對象

  • 方法可做爲對象賦值給其餘變量
  • 方法可做爲參數傳遞給其餘方法
void main(){
  var fun=sayHello;
  fun(); //say hello!!!
  
  //方法做爲參數傳遞給另外一個方法
  var list=["Java","Kotlin","Dart","Python"];
  list.forEach(print);
}

sayHello()=>print("say hello!!!");
複製代碼

匿名方法特性

  • 可賦值給變量,經過變量進行調用
  • 可在其餘方法中直接調用
void main() {
  var a = (s) {
    print("hello,\$s");
  };
  a("Yxjie"); //hello,Yxjie

  var list = ["a", "b", "c"];
  print(listAddPre(list, addPre)); //[new a, new b, new c]

  print(listAddPre(list, (s) {
    return s * 3;
  }));//[new anew anew a, new bnew bnew b, new cnew cnew c]
}

addPre(s) => "new " + s;

listAddPre(List list, addPre(s)) {
  for (var i = 0; i < list.length; i++) {
    list[i] = addPre(list[i]);
  }
  return list;
}
複製代碼

閉包

  • 閉包是一個方法對象
  • 閉包定義在其餘方法內部
  • 閉包可以訪問外部方法局部變量,並持有他的狀態
void main(){
  var fun=a();//與方法對象略微不同
  fun();//0
  fun();//1
}

a(){
  var count=0;

  printCount(){
    print(count++);
  }
  return printCount;
}
複製代碼

後續會持續更新Dart面向對象編程以及Flutter相關文章

相關文章
相關標籤/搜索