Dart言語【004】制御フロー文


1.条件判断文
1.1 if文
if文の使い方は他の言語と変わらない.
void Func(int n) {
  if (n > 0) {
    print("  ");
  } else {
    if (n == 0) {
      print(" ");
    } else {
      print("  ");
    }
  }
}

なお、ifの条件式の値のタイプは、チェックモードでboolまたはboolの派生クラスである必要があります.そうしないと、異常(exception)が発生します.本番モードではifの条件は任意のタイプを受け入れることができるが、boolでもbool派生クラスでもない任意のタイプの変数はfalseと見なされる.
if (1) { //          ;         if (false)

}

あなたは間違っていません.1 falseと見なされています.
2.スイッチ文
2.1 switch文
switch文のフォーマットは次のとおりです.
switch (e) {
  case      1:
  case      1:
  ......
  case      n:
  default:
}

ここでeは式です.eのタイプをTとすると、Tはoperator==をリロードしなければならない.演算子のリロードについては後述しますが、C++やC#などの演算子のリロード言語に触れたことがあれば、分かりやすいです.接触していなくても大丈夫です.t 1とt 2がTタイプの変数であると、式t 1==t 2が合法であると一時的に理解できます.
2.2 switch文の性質
1)空でないcaseは、実行後にbreak、return、throwでswitchを終了するか、continue文で別のcaseを実行しなければならない(後述continue文).
2)空のcaseは,直接貫くことができる.
void Func(int n) {
  switch (n) {
    case 1: //   case,      
    case 2:
    case 3: //    case
      print("n 1、2 3");
      break;
    case 4: //   case,      break  switch
      break;
    default:
      break;
  }
}

3.循環文
3.1 for文
Dartのfor文はC言語に似ていて、特別なところはありません.
for (int i = 0; i < 10; i++) {
  print(i);
}

3.2 forEach関数
Dartは多くの言語のように「foreach文」を提供していないが、ListとMapタイプではforEachメンバー関数を提供している.
Listタイプにはメンバー関数forEachがあります.
// Dart        ,       :
class List<T> {
  void forEach(void f(T t));
}

forEachは,(T t)をパラメータリストとし,戻り値のない関数を受け入れる.
void main() {
  List<int> theList = [1, 3, 2, 90];
  theList.forEach(Op);
}

void Op(int n) {
  print(n);
}

Mapタイプにはメンバー関数forEachがあります.
// Dart        ,       :
class Map<K, V> {
  void forEach(void f(K key, V value));
}

3.3 while文
whileは簡略化版のforと見なすことができる.
while (x) {
  //   
}

次のようになります.
for (; x;) {
  //   
}

3.4 do-while文
do-whileとwhileの違いは,1つが先に判断し,1つが先に実行してから判断することである.これはC言語と同じです.例はあげません.
‍4. スキップ文
breakとcontinue
breakとcontinueの使い方はC言語などの一般的なプログラミング言語と同じです.continueは今回のループを終了し、breakはループ全体を終了します.
さらにcontinue文は、switchで使用して、1つの非空caseを実行した後に別のcaseを実行し続ける目的を達成することができる.
void Func(int n) {
  switch (n) {
    case 1:
      print("case 1");
      continue Label_; //    case 1  ,    case 2
    Label_: case 2:
      print("case 2");
      break;
    case 3:
      print("case 3");
      break;
    default:
      print("default");
      break;
  }
}

そのうちLabel_の役割は、continue文のジャンプの場所を示すためにcaseにラベルを追加することです.