Kotlin-制御フロー

前の章では、Kotlinシステムで使用できるさまざまなタイプのデータ型について学習しました。この章では、Kotlinで使用できるさまざまなタイプの制御フローメカニズムについて説明します。

もし-そうでなければ

Kotlinは関数型言語であるため、Kotlinのすべての関数型言語と同様です。 “if”は式であり、キーワードではありません。表現“if”必要に応じて値を返します。他のプログラミング言語と同様に、“if-else”ブロックは、初期の条件付きチェック演算子として使用されます。次の例では、2つの変数を比較し、それに応じて必要な出力を提供します。

fun main(args: Array<String>) {
   val a:Int = 5
   val b:Int = 2
   var max: Int
   
   if (a > b) {
      max = a
   } else {
      max = b
   }
   print("Maximum of a or b is " +max)
 
   // As expression 
   // val max = if (a > b) a else b
}

上記のコードは、ブラウザで次の出力を生成します。この例には、使用方法を示す別のコード行も含まれています“If” 式としてのステートメント。

Maximum of a or b is 5

いつの使用

他のプログラミング言語に精通している場合は、switchステートメントという用語を聞いたことがあるかもしれません。これは基本的に、特定の変数に複数の条件を適用できる場合の条件演算子です。 “when”演算子は、変数値を分岐条件と照合します。分岐条件を満たす場合は、そのスコープ内でステートメントを実行します。次の例では、Kotlinの「いつ」について詳しく学習します。

fun main(args: Array<String>) {
   val x:Int = 5
   when (x) {
      1 -> print("x = = 1")
      2 -> print("x = = 2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

上記のコードは、ブラウザに次の出力を生成します。

x is neither 1 nor 2

上記の例では、Kotlinコンパイラはの値と一致します x与えられた枝で。どのブランチとも一致しない場合は、else部分を実行します。実際には、whenは複数のifブロックと同等です。Kotlinは、開発者に別の柔軟性を提供します。開発者は、チェック内に「、」を指定することで、同じ行に複数のチェックを提供できます。上記の例を次のように変更してみましょう。

fun main(args: Array<String>) {
   val x:Int = 5
   when (x) {
      1,2 -> print(" Value of X either 1,2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

同じことをブラウザで実行すると、ブラウザに次の出力が表示されます。

x is neither 1 nor 2

Forループ

ループは、あらゆる種類のデータ構造を反復処理する柔軟性を提供する発明です。他のプログラミング言語と同様に、Kotlinもさまざまな種類のループ手法を提供していますが、その中には“For”最も成功したものです。Forループの実装と使用は、概念的にはJavaのforループに似ています。次の例は、実際の例で同じものを使用する方法を示しています。

fun main(args: Array<String>) {
   val items = listOf(1, 2, 3, 4)
   for (i in items) println("values of the array"+i)
}

上記のコードでは、「items」という名前の1つのリストを宣言し、forループを使用して、その定義済みリストを反復処理し、その値をブラウザーに出力しています。以下は出力です。

values of the array1
values of the array2
values of the array3
values of the array4

以下は、コードの別の例です。ここでは、ライブラリ関数を使用して、開発作業をこれまでになく簡単にしています。

fun main(args: Array<String>) {
   val items = listOf(1, 22, 83, 4)
   
   for ((index, value) in items.withIndex()) {
      println("the element at $index is $value")
   }
}

上記のコードをコーディンググラウンドでコンパイルして実行すると、ブラウザに次の出力が表示されます。

the element at 0 is 1
the element at 1 is 22
the element at 2 is 83
the element at 3 is 4

whileループとDo-Whileループ

WhileおよびDo-Whileは、他のプログラミング言語とまったく同じように機能します。これら2つのループの唯一の違いは、Do-whileループの場合、条件はループの最後でテストされることです。次の例は、の使用法を示していますWhile loop

fun main(args: Array<String>) {
   var x:Int = 0
   println("Example of While Loop--")
   
   while(x< = 10) {
      println(x)
      x++
   } 
}

上記のコードは、ブラウザに次の出力を生成します。

Example of While Loop--
0
1
2
3
4
5
6
7
8
9
10

Kotlinには、Do-Whileループと呼ばれる別のループもあります。このループでは、ループ本体が1回実行された後、条件がチェックされます。次の例は、の使用法を示していますDo-while loop

fun main(args: Array<String>) {
   var x:Int = 0
   do {
      x = x + 10
      println("I am inside Do block---"+x)
   } while(x <= 50)
}

上記のコードは、ブラウザに次の出力を生成します。上記のコードでは、KotlinコンパイラがDOブロックを実行してから、whileブロックの条件チェックインを行います。

I am inside Do block---10
I am inside Do block---20
I am inside Do block---30
I am inside Do block---40
I am inside Do block---50
I am inside Do block---60

リターン、ブレイク、コンティニューの使用

プログラミング言語に精通している場合は、アプリケーションに適切な制御フローを実装するのに役立つさまざまなキーワードのアイデアが必要です。以下は、ループまたはその他のタイプの制御フローを制御するために使用できるさまざまなキーワードです。

Return− returnは、呼び出された関数から呼び出し元の関数に値を返すキーワードです。次の例では、Kotlinコーディンググラウンドを使用してこのシナリオを実装します。

fun main(args: Array<String>) {
   var x:Int = 10
   println("The value of X is--"+doubleMe(x))
}
fun doubleMe(x:Int):Int {
   return 2*x;
}

上記のコードでは、別の関数を呼び出し、入力に2を掛けて、結果の値をメイン関数である呼び出された関数に返しています。Kotlinは、次の章で説明する別の方法で関数を定義します。今のところ、上記のコードがブラウザで次の出力を生成することを理解するだけで十分です。

The value of X is--20

Continue & Break−継続と中断は、論理的な問題の最も重要な部分です。「break」キーワードは、何らかの条件が失敗した場合にコントローラーフローを終了し、「continue」はその逆を行います。この操作はすべて、すぐに確認できる状態で行われます。Kotlinは他のプログラミング言語よりも賢く、開発者は可視性として複数のラベルを適用できます。次のコードは、Kotlinでこのラベルを実装する方法を示しています。

fun main(args: Array<String>) {
   println("Example of Break and Continue")
   myLabel@ for(x in 1..10) { // appling the custom label
      if(x = = 5) {
         println("I am inside if block with value"+x+"\n-- hence it will close the operation")
         break@myLabel //specifing the label
      } else {
         println("I am inside else block with value"+x)
         continue@myLabel
      }
   }
}

上記のコードは、ブラウザに次の出力を生成します。

Example of Break and Continue
I am inside else block with value1
I am inside else block with value2
I am inside else block with value3
I am inside else block with value4
I am inside if block with value5
-- hence it will close the operation

ご覧のとおり、コントローラーは、の値が x は5です。 x 5に達すると、ifブロックの実行が開始され、breakステートメントに達すると、制御フロー全体がプログラムの実行を終了します。