Dart语言基础特性

概述

  • 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申明的常量,为编译期常量

const a = 10 ; //不可变了

数据类型(内置数据类型)

  • 数值型(Number)【整型:int 浮点型:double】
数值型操作

1.运算符:+,-,*,/,~/(整除),%
2.常用属性:isNaN,isEvent (是否是偶数),isOdd(是否是奇数)等
3.常用方法:abs(),round(),toInt(),toDouble()

  • 字符串(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相关文章

你可能感兴趣的:(Dart语言基础特性)