コトリンループ

最近、プロジェクトを書いているときに、 kotlin がループから抜け出すという問題が発生しました。プロジェクトの都合上、次の簡単な例をデモとして取り上げます。

1. 質問

まず、ループから抜け出す通常の関数を見てみましょう。誰もが知っているので、コードだけを掲載します。

val list = listOf(1, 2, 3, 4, 5)
for (num in list) {
    
    
    if (count == 3) {
    
    
        break // 退出循环
    }
    // 打印 1和2
    println(num)
}

実際の開発ではlist.forEach関数を使用しました。

// label@标签
list.forEach label@{
    
    
    if (it == 3) {
    
    
        // 在这里return之后,实际上并没有跳出循环
        return@label
    }
    // 打印 1 2 4 5
    println("label:$it")
}

上の例では、return@label を呼び出した後、ループは実際には抜け出していません。ここで必要なのは、値が 3 のときにループを抜け出し、1、2 を出力し、実際には 1、2、4、5 を出力することです。 、続けてください。同じです

for (i in list) {
    
    
    if (i == 3) {
    
    
        continue
    }
    println("continue:$i")
}

では、なぜ forEach 関数を使用してループを抜け出すことができないのでしょうか?

forEachは、ラムダ式を引数として受け取り、それをコレクション内の各要素に適用する高階関数です。forEachコレクション内の各要素を走査するだけなので、値は返されません

最後に、list.forEach と for ループの違いについて説明します。

  1. 構文構造は異なりますlist.forEachこれは、ラムダ式をパラメータとして受け取る高階関数です。代わりに、キーワードをfor (num in list)使用してコレクション内の要素を走査する反復子ベースの構文構造です。in

  2. 戻り値は異なりますlist.forEach戻り値はなく、ラムダ式をコレクション内の各要素に適用するだけです。for (num in list)走査中に各要素を返します。この戻り値を使用して他の操作を行うことができます

  3. 読みやすさの違い:list.forEach構文構造がより簡潔になり、特にコレクションに対する単純な操作に適しています。の構文構造for (num in list)はより柔軟であり、任意の論理処理を記述することができます。

2. 結論

  1. コレクション内の要素を単純に反復するには、次を使用します。list.forEach
  2. コレクションを走査して複雑なロジック処理を行う場合、または走査された要素を返す必要がある場合に使用します。for (num in list)

おすすめ

転載: blog.csdn.net/flytosky21/article/details/130030469