Kotlin - Dòng điều khiển

Trong chương trước, chúng ta đã tìm hiểu về các loại kiểu dữ liệu khác nhau có sẵn trong hệ thống Kotlin. Trong chương này, chúng ta sẽ thảo luận về các loại cơ chế luồng điều khiển khác nhau có sẵn trong Kotlin.

Nếu khác

Kotlin là một ngôn ngữ chức năng do đó giống như mọi ngôn ngữ chức năng trong Kotlin “if”là một biểu thức, nó không phải là một từ khóa. Cách diễn đạt“if”sẽ trả về một giá trị bất cứ khi nào cần thiết. Giống như các ngôn ngữ lập trình khác,“if-else”khối được sử dụng như một toán tử kiểm tra điều kiện ban đầu. Trong ví dụ sau, chúng tôi sẽ so sánh hai biến và cung cấp đầu ra cần thiết cho phù hợp.

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
}

Đoạn mã trên tạo ra kết quả như sau trong trình duyệt. Ví dụ của chúng tôi cũng chứa một dòng mã khác, mô tả cách sử dụng“If” câu lệnh như một biểu thức.

Maximum of a or b is 5

Sử dụng khi nào

Nếu bạn đã quen thuộc với các ngôn ngữ lập trình khác, thì bạn có thể đã nghe nói đến thuật ngữ switch, về cơ bản là một toán tử điều kiện khi nhiều điều kiện có thể được áp dụng trên một biến cụ thể. “when”toán tử so khớp giá trị biến với các điều kiện rẽ nhánh. Nếu nó thỏa mãn điều kiện rẽ nhánh thì nó sẽ thực hiện câu lệnh bên trong phạm vi đó. Trong ví dụ sau, chúng ta sẽ tìm hiểu thêm về “khi nào” trong 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")
      }
   }
}

Đoạn mã trên tạo ra kết quả sau trong trình duyệt.

x is neither 1 nor 2

Trong ví dụ trên, trình biên dịch Kotlin khớp với giá trị của xvới các nhánh đã cho. Nếu nó không khớp với bất kỳ nhánh nào, thì nó sẽ thực thi phần khác. Trên thực tế, khi nào tương đương với nhiều khối if. Kotlin cung cấp một sự linh hoạt khác cho nhà phát triển, nơi nhà phát triển có thể cung cấp nhiều séc trong cùng một dòng bằng cách cung cấp “,” bên trong séc. Hãy để chúng tôi sửa đổi ví dụ trên như sau.

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")
      }
   }
}

Chạy tương tự trong trình duyệt, điều này sẽ mang lại kết quả sau trong trình duyệt.

x is neither 1 nor 2

Đối với vòng lặp

Vòng lặp là một phát minh cung cấp sự linh hoạt để lặp qua bất kỳ loại cấu trúc dữ liệu nào. Giống như các ngôn ngữ lập trình khác, Kotlin cũng cung cấp nhiều loại phương pháp Looping, tuy nhiên, trong số đó“For”là thành công nhất. Việc triển khai và sử dụng vòng lặp For về mặt khái niệm tương tự như vòng lặp for trong Java. Ví dụ sau đây cho thấy cách chúng ta có thể sử dụng tương tự trong các ví dụ thực tế.

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

Trong đoạn mã trên, chúng tôi đã khai báo một danh sách có tên là “items” và sử dụng vòng lặp for, chúng tôi đang lặp lại danh sách đã xác định đó và in giá trị của nó trong trình duyệt. Sau đây là đầu ra.

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

Sau đây là một ví dụ khác về mã, nơi chúng tôi đang sử dụng một số hàm thư viện để làm cho công việc phát triển của chúng tôi dễ dàng hơn bao giờ hết.

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")
   }
}

Khi chúng tôi biên dịch và thực thi đoạn mã trên trong nền tảng mã hóa của mình, nó sẽ mang lại kết quả sau trong trình duyệt.

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

Vòng lặp Trong khi và Vòng lặp Do-Trong khi

While và Do-While hoạt động theo cách tương tự như chúng làm trong các ngôn ngữ lập trình khác. Sự khác biệt duy nhất giữa hai vòng lặp này là, trong trường hợp vòng lặp Do-while, điều kiện sẽ được kiểm tra ở cuối vòng lặp. Ví dụ sau đây cho thấy việc sử dụngWhile loop.

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

Đoạn mã trên tạo ra kết quả sau trong trình duyệt.

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

Kotlin cũng có một vòng lặp khác gọi là vòng lặp Do-While, trong đó phần thân của vòng lặp sẽ được thực hiện một lần, chỉ khi đó điều kiện mới được kiểm tra. Ví dụ sau đây cho thấy việc sử dụngDo-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)
}

Đoạn mã trên tạo ra kết quả sau trong trình duyệt. Trong đoạn mã trên, trình biên dịch Kotlin sẽ thực thi khối DO, sau đó nó sẽ kiểm tra điều kiện trong khối 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

Sử dụng Quay lại, Ngắt, Tiếp tục

Nếu bạn đã quen thuộc với bất kỳ ngôn ngữ lập trình nào, thì bạn phải có ý tưởng về các từ khóa khác nhau giúp chúng tôi triển khai luồng kiểm soát tốt trong ứng dụng. Sau đây là các từ khóa khác nhau có thể được sử dụng để điều khiển các vòng lặp hoặc bất kỳ loại luồng điều khiển nào khác.

Return- Return là từ khóa trả về giá trị nào đó cho hàm đang gọi từ hàm được gọi. Trong ví dụ sau, chúng tôi sẽ thực hiện kịch bản này bằng cách sử dụng nền tảng mã hóa Kotlin của chúng tôi.

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;
}

Trong đoạn mã trên, chúng ta đang gọi một hàm khác và nhân đầu vào với 2, và trả về giá trị kết quả cho hàm được gọi là hàm chính của chúng ta. Kotlin định nghĩa hàm theo một cách khác mà chúng ta sẽ xem xét trong chương tiếp theo. Bây giờ, đủ để hiểu rằng đoạn mã trên sẽ tạo ra kết quả sau trong trình duyệt.

The value of X is--20

Continue & Break- Tiếp tục và ngắt quãng là phần quan trọng nhất của một bài toán logic. Từ khóa "break" chấm dứt luồng bộ điều khiển nếu một số điều kiện không thành công và "tiếp tục" làm ngược lại. Tất cả hoạt động này xảy ra với khả năng hiển thị ngay lập tức. Kotlin thông minh hơn các ngôn ngữ lập trình khác, trong đó nhà phát triển có thể áp dụng nhiều nhãn làm khả năng hiển thị. Đoạn mã sau đây cho thấy cách chúng tôi triển khai nhãn này trong 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
      }
   }
}

Đoạn mã trên tạo ra kết quả sau trong trình duyệt.

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

Như bạn có thể thấy, bộ điều khiển tiếp tục vòng lặp, cho đến khi và trừ khi giá trị của x là 5. Khi giá trị của x đạt đến 5, nó bắt đầu thực hiện khối if và khi đạt đến câu lệnh break, toàn bộ luồng điều khiển sẽ kết thúc việc thực thi chương trình.