[解決済み] Groovyの "each "クロージャから抜け出せるか?
2022-04-26 12:13:43
質問
を行うことは可能ですか?
break
をGroovyの
.each{Closure}
それとも古典的なループを使うべきでしょうか?
どのように解決するのですか?
例外を発生させずに、"each" を中止することはできません。 特定の条件下でブレークを中断させたい場合は、古典的なループを使用することになるでしょう。
あるいは、each の代わりに "find" クロージャを使用して、break を実行したときに true を返すこともできます。
この例では、リスト全体を処理する前にアボートします。
def a = [1, 2, 3, 4, 5, 6, 7]
a.find {
if (it > 5) return true // break
println it // do the stuff that you wanted to before break
return false // keep looping
}
プリント
1
2
3
4
5
が、6や7を表示しない。
また、クロージャを受け付ける独自のイテレータメソッドやブレーク動作も簡単に書くことができます。
List.metaClass.eachUntilGreaterThanFive = { closure ->
for ( value in delegate ) {
if ( value > 5 ) break
closure(value)
}
}
def a = [1, 2, 3, 4, 5, 6, 7]
a.eachUntilGreaterThanFive {
println it
}
も印刷します。
1
2
3
4
5
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン