[Flutter跨平台]三、Dart基础2-运算符、流程控制

57 阅读1分钟

1. 运算符

1.1. 算术运算符

void main(){
  int a = 10;
  int b = 3;

  // 加
  // 减
  // 乘
  // 除
  // print(a/b);
  // 取整:取除法结果的整数部分  (重要)
  print(a~/b);
  // 取余: 取除法结果的余数
  print(a%b);
  

}

1.2. 赋值运算符

void main(){
  
  // 等于 =
  // int a = 10;
  // 加等于 +=
  // a+=1;

  // 减等于
  // a-=1;

  // 乘等于
  // a*=2;

  // 除等于
  // 注意:要num、double类型的才能/=
  // double b = 10;
  // b/=2;
  // print(b);

  // 取余等于
  // int c = 10;
  // c%=3;
  // print(c);

  // 自增
  // int a = 10;
  // // a++;
  // ++a;
  // print(c);

  // 自增拓展 (重要)
  // int a = 10;
  // //先赋值再自增;   先把a赋值给b,a再自增(就是a自己+1,再赋值给a) 
  // int b = a++;
  // print(a);
  // print(b);
  // //先自增再赋值;      a先自增1,再把自增后的值赋值给b
  // int b = ++a;
  // print(a);
  // print(b);

  // 自减
  // int c = 10;
  // c--;
  // print(c);


  // print('a值:${a}');
}

1.3. 比较运算符

// 比较运算符, 比较后的结果分为 true和false
void main(){
// 大于 >

// 小于 <

// 大于等于 >=

// 小于等于 <=

// 等于 ==
// 注意:只有==,没有===

// 不等于 !=
  

}

1.4. 逻辑运算符

// 逻辑运算符

void main(){
  // 年龄
  // int age = 33;
  // 工作年限
  int year = 10;
  // 1.逻辑:与(and)     就是条件都需要满足
  // 年龄大于28岁,并且工作年限大于4年
  // bool ret = age>28 && year>4;
  // print(ret);

  // 2.逻辑:或
  // 年龄大于23岁,或工作年限大于2年
  //   bool ret = age>23 || year>20;
  // print(ret);

  // 3.逻辑:真变假,假变真
  // print(!true);
  // print(!false);

  // 工作年限不小于9年
  // bool ret = year>=9;
  bool ret = !(year<9);
  print(ret); 
}

2. 流程控制

2.1. if分支

void main(){
  // 单分支:一个if(){};
  int score = 91;
  if (score>=90) {
    print('很好');
  }

  // 双分支: if () {} else {};
  if (score>=90) {
    print('很好');
  } else {
    print('加油');
  }

  // 多分支: if() {} else if() {} else if() {} else if() {} else {};
  if (score>=90) {
    print('很好');
  } else if(score>=60) {
    print('良好');
  }  else {
    print('加油');
  } 


}

2.2. 三元运算符

void main(){
  int score = 80;

  // 双分支: if () {} else {};
  // if (score>=90) {
  //   print('很好');
  // } else {
  //   print('加油');
  // }
  // 用三元运算符表示
  score>=90 ? print('很好') : print('加油');




  // 多分支: if() {} else if() {} else if() {} else if() {} else {};
  // if (score>=90) {
  //   print('很好');
  // } else if(score>=60) {
  //   print('良好');
  // }  else {
  //   print('加油');
  // }
  // 多分支就不适合用三元运算符


}

2.3. switch case 语句

void main(){
  // 根据订单状态,打印出订单状态描述信息
  // 什么时候用?也是做判断 且 有多个(很多个)同类固定数字条件(如1/2/3) 且 是等于判断(不是那种大于小于的范围判断),此时性能比if更好,为什么更好?我觉得是 这会直接跳到对应的分支,而不需要一个一个条件比较
  int sta = 3;
  switch(sta){
    case 1:
      print('待付款');
      // break;
    case 2:
      print('待发货');
      break;
    case 3:
      print('待收货');
      break;
    case 4:
      print('待评价');
      break;
    default: //例如sta为10时,就会跳到这里;
      print('其他');//这里下面不用写break
  }

// JS和arkTS有“穿透”的现象,就是不写break就会穿透到下面的case

}

2.4. 循环语句

void main(){
  // 1. while循环
  // 写法类似与if分支,再在内容里配合 i++;
  // int i = 0;
  // while (i<10) {
  //   print('吃第${i}个苹果');
  //   i++;
  // }

  // 2. for循环
  // for(var i=0 ; i<10 ; i++){
  //   print('吃第${i+1}个苹果');
  // }

  // 3. 遍历列表
  // 3.1 for循环来遍历
  // List category = ['首页','分类','详情','购物','我的'];
  // for (var i = 0; i < category.length; i++) {
  //   print(category[i]);
  // }

  // 3.2 for ... in循环来遍历
  // for (var element in category) {
  //   print(element);
  // }


  // 4. 中止循环
  // 4.1 break  会中断整个循环
  // for (var element in category) {
  //   print(element);
  //   if (element=='详情') {
  //     print('是${element},中断');
  //     break;
  //   }
  // }
  // 4.2 continue
  for (var i = 0; i < 5; i++) {
    print('吃到第${i+1}个苹果;');
    if (i == 2) {
      print('吃到第${i+1}个苹果;有虫,继续吃后面的苹果;');
      continue;
    }
  }


}

3. 基础语法 - 综合案例

// 需求:计算购物车数据中,被勾选商品的总价

void main(){
   // 准备购物车数据
  List carts = [
    {"count": 2, "price": 10.0, "selected": true},
    {"count": 1, "price": 30.0, "selected": false},
    {"count": 5, "price": 20.0, "selected": true}
  ];

  double price = 0;
  for (var element in carts) {
    if (element['selected']) {
      print(element);
      price += element['price']*element['count'];
    }
  }
  print('总价:${price}');
}