例
each
リストの要素を変更しないため、このテストは失敗します。
void test_each_DoesNotModifyListElements() {
List<String> list = ["a", "b", "c"]
list.each { it = it + "z" }
assert ["az", "bz", "cz"] == list
}
collect
要素が変更された新しいリストが返されるため、このテストは成功します。
void test_collect_ReturnsNewListWithModifiedElements() {
List<String> list = ["a", "b", "c"]
list = list.collect{ it + "z" }
assert ["az", "bz", "cz"] == list
}
予測
この時点で、私はeach
リストの要素を変更しないと仮定しています。なぜなら、私は以下のテストを書いており、それがテストが私に伝えていることだと仮定しているためです。間違っている場合は修正してください。
void test_each_DoesNotModifyListElements1() {
List<String> list = ["a", "b", "c"]
list.each { it + "z" }
assert ["az", "bz", "cz"] == list
}
void test_each_DoesNotModifyListElements2() {
List<String> list = ["a", "b", "c"]
list.each { it = it + "z" }
assert ["az", "bz", "cz"] == list
}
void test_each_DoesNotModifyListElements3() {
List<String> list = ["a", "b", "c"]
list = list.each { it = it + "z" }
assert ["az", "bz", "cz"] == list
}
質問
問題は、Groovy の初心者として、リストの要素が変更されないことを、テストを作成してグーグルで検索する前に、どのように事前に知っておく必要があるかということです。each
ドキュメントを読んで?
Groovy each documentation : 集約型またはデータ構造を反復処理し、各項目を指定されたクロージャーに渡します。カスタム型は、「iterator()」メソッドを提供するだけでこのメソッドを利用できます。結果のイテレータから返されたアイテムは、クロージャに渡されます。
多くの場合、私は物事を試したり、答えを探したりするのに多くの時間を費やしてしまいます. もっと効率的な方法はないのでしょうか。ある?