Dart语言基础特性

2019-05-09  本文已影响0人  Yxjie

概述

变量

  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 ; //不可变了

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

数值型操作

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

//三种创建方式  
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);
  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语句

var language = "Kotlin";

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

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

  // 运行结果
  //Kotlin---
  //java---

方法

方法特性


 //标准定义
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";

可选参数

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");

默认参数

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相关文章

上一篇 下一篇

猜你喜欢

热点阅读