Operator

除法

傳回值類型為 double ,有小數點。
使用runtimeType屬性,查看變數類型。

1
2
3
4
5
6
void main() {
  int d1 = 9;
  var res = d1 / 5;
  print(res.runtimeType);
  print(res);
}
double
1.8

除法要用double 類型。

1
2
3
4
5
6
void main() {
  int d1 = 9;
  double res = d1 / 5;
  print(res.runtimeType);
  print(res);
}

整除 ~/

傳回值類型為 int ,無條件去掉小數點。

1
2
3
4
5
6
void main() {
  int d1 = 9;
  var res = d1 ~/ 5;
  print(res.runtimeType);
  print(res);
}
int
1

整除類型要用int。

1
2
3
4
5
6
void main() {
  int d1 = 9;
  int res = d1 ~/ 5;
  print(res.runtimeType);
  print(res);
}

邏輯運算子

邏輯運算子 說明
&& 二邊都為true則true
|| 有一個為true則true
! 相反

左右二邊運算元都要是bool 類型。
以下編譯(語法)錯誤。

1
2
3
4
5
6
7
8
9
10
11
12
13
void main() {
  int d1 = 1;
  int d2 = 0;
  if (d1 && d2) {
    print("d1 && d2 is true");
  }
  if(d1) {
    print("true");
  }
  if(d2) {
    print("false");
  }
}

C++ 與 Python 可以接受任何類型做 and / or 邏輯運算,但 dart 只接受bool 進行邏輯運算。

以下是修改後,dart正確程式碼。

1
2
3
4
5
6
7
8
9
10
11
12
13
void main() {
  bool b1 = true;
  bool b2 = false;
  if (b1 && b2) {
    print("b1 && b2 is true");
  }
  if (b1) {
    print("true");
  }
  if (b2) {
    print("false");
  }
}

三元運算子

語法

條件 ? 結果1 : 結果2;
1
2
3
4
void main() {
  int score = 60;
  print(score >= 60 ? "及格" : "不及格");
}

results matching ""

    No results matching ""