dart控制語句和方法

控制語句

4-1if語句

void main() {
  int score = 100;
  if (score >= 90) {
    if (score == 100) {
      print('完美');
    } else {
      print('優秀');
    }
  } else if (score > 60) {
    print('良好');
  } else if (score == 60) {
    print('及格');
  } else {
    print('不及格');
  }
}

4-2for語句

void main() {
  var list = [1, 2, 3, 4, 5];
  // for循環
  for (var index = 0; index < list.length; index++) {
    print(list[index]);
  }
  // 不須要使用下標時 能夠使用這種方法遍歷列表的元素
  for (var item in list) {
    print(item);
  }
}

4-3while語句

void main() {
  int c = 0;
  // 當c<5時就循環打印c 打完加1
  while (c < 5) {
    print(c++);
  }
// 先執行do再進行while循環
  do {
    print(c--);
  } while (c > 0 && c < 5);
}

4-4break和continue

void main() {
  var list = [1, 2, 3];
  for (var i in list) {
    // if (i != 2) {
    //   print(i);
    // }
    if (i == 2) {
      //跳出當前循環
// break;
// 打印1,3會跳過當前這種狀況繼續執行
      continue;
    }
    print(i);
  }
  print('----------');
  var list2 = [4, 5, 6];
  for (var a in list2) {
    if (a == 5) {
      //只會終止本身所在的for循環 外邊還有嵌套的for循環 不會終止
      break;
    }
    print(a);
  }
}

4-5switch...case語句

void main() {
  String lan = 'java';
  // switch case 每一個case後面要跟一個break;默認是default
  switch (lan) {
    case 'dart':
      print('dart is my fav');
      break;
    case 'java':
      print('java is my fav');
      break;
    default:
      print('none');
  }
  switch (lan) {
    D:
    case 'dart':
      print('dart is my fav');
      break;
    case 'java':
      print('java is my fav');
      // 先執行當前case中的 而後跳轉到D中的case繼續執行
      continue D;
    // break;
    default:
      print('none');
  }
}

方法

5-1方法的定義

// void是沒有返回值的 返回值類型:方法名(參數){return:返回值}
//"f:\vscodexm\dartlearn\chapter5\function_declaration.dart" 1 'test' true
// 方法也是對象 而且有具體類型的function
// 返回值類型  參數類型 均可以省略
// 箭頭語法簡化代碼 只適用於一個表達式
// 方法都有返回值 沒指定 return null
void main(List args) {
  print(args);
  print(geta('張三', 18));
  printp('李四', 20);
}

// String geta(String name,int age){
// return 'name=$name,age=$age';
// }
// =>箭頭能夠表示返回值 箭頭後面能夠跟表達式
int gender = 2;
geta(name, age) => gender == 1 ? 'name=$name,age=$age' : 'test';

// 返回值類型 和參數類型能夠省略 默認爲void
// printp(name,age){
//   print('name=$name,age=$age');
// }
void printp(String name, int age) {
  print('name=$name,age=$age');
}

5-2可選參數

// void是沒有返回值的 返回值類型:方法名(參數){return:返回值}
//"f:\vscodexm\dartlearn\chapter5\function_declaration.dart" 1 'test' true
// 方法也是對象 而且有具體類型的function
// 返回值類型  參數類型 均可以省略
// 箭頭語法簡化代碼 只適用於一個表達式
// 方法都有返回值 沒指定 return null
void main(List args) {
  print(args);
  print(geta('張三', 18));
  printp('李四', 20);
}

// String geta(String name,int age){
// return 'name=$name,age=$age';
// }
// =>箭頭能夠表示返回值 箭頭後面能夠跟表達式
int gender = 2;
geta(name, age) => gender == 1 ? 'name=$name,age=$age' : 'test';

// 返回值類型 和參數類型能夠省略 默認爲void
// printp(name,age){
//   print('name=$name,age=$age');
// }
void printp(String name, int age) {
  print('name=$name,age=$age');
}

5-3默認參數值

void main() {
  // name=xxx,gender=null,age=null調用這個方法後兩個參數可不傳
  printp('xxx');
// name=xxx,gender=male,age=20{}根據命名來
  printp('xxx', gender: 'male');
  printp('xxx', age: 20);
}

// {int age=30,String gender='female'}設置默認參數
printp(String name, {int age = 30, String gender = 'female'}) {
  print('name=$name,gender=$gender,age=$age');
}
### 5-4方法對象
void main() {
  var func = printhello;
  Function func1 = printhello;
  func();
  func1();
// 方法做爲一個參數進行傳遞
  var list = [1, 2, 3, 4];
  list.forEach(print);
  var list2 = ['a', 'b', 'c'];
// [aaa, bbb, ccc一個方法 做爲其餘方法參數進行傳遞
  print(listtimes(list2, times));
}

// dart中方法也都是對象 能夠賦值給其餘對象或變量
void printhello() {
  print('hello');
}

List listtimes(List list, String times(str)) {
  for (var i = 0; i < list.length; i++) {
    list[i] = times(list[i]);
  }
  return list;
}

String times(str) {
  return str * 3;
}

5-5匿名方法

void main() {
  // 匿名方法 能夠經過賦值給對象或者方法來調用
  // (){
  //   print('hello');
  // };
  // 匿名方法也能夠傳參
  var func = (str) {
    print('hello----$str');
  };
  func(30);
  // 直接調用匿名方法 不推薦使用
  (() {
    print('test不推薦');
  })();
  var list2 = ['a', 'b', 'c'];
  var result = listtimes(list2, (str) => str * 3);
  print(result);
  // listtimes(list2, (str){return str*3;});
}

List listtimes(List list, String times(str)) {
  for (var i = 0; i < list.length; i++) {
    list[i] = times(list[i]);
  }
  return list;
}

5-6閉包

// 閉包是一個方法(對象)
// 閉包定義在其餘方法內部
// 閉包可以訪問外部方法中的局部變量,並持有其狀態
void main() {
  var func = a();
  func();
  func();
  func();
  func();
}

a() {
  int count = 0;
  //printCount是一個閉包 能夠持有a中count的狀態 也能夠使用匿名方法
  // printCount(){
  //   print(count++);
  // }
  // return printCount;
  // 匿名方法
  return () {
    print(count++);
  };
}
相關文章
相關標籤/搜索