groovy中的范围迭代和数组索引
随着groovy的使用越来越多,我觉得编写groovy中的范围迭代和数组索引,groovy,Groovy,随着groovy的使用越来越多,我觉得编写for(){}循环有点不方便。我几乎总是避免Javafor(){}循环,而选择groovyeach{}循环。但是有一种情况是,我无法避免()的{} 在我们的项目中,我们不会将迭代器返回到某个类的成员列表中。我们返回列表的大小,然后获取(索引)方法,如以下摘录所示: class ClassWithList { private def tempList = ["a","b","c"] public int getNumberOfItems(
for(){}
循环有点不方便。我几乎总是避免Javafor(){}
循环,而选择groovyeach{}
循环。但是有一种情况是,我无法避免()的{}
在我们的项目中,我们不会将迭代器返回到某个类的成员列表中。我们返回列表的大小,然后获取(索引)方法,如以下摘录所示:
class ClassWithList
{
private def tempList = ["a","b","c"]
public int getNumberOfItems()
{
return 3;
}
public String getItem(int pIndex)
{
return tempList[pIndex];
}
}
调用类首先调用getNumberOfItems()
,然后使用getItem()
迭代列表:
ClassWithList obj = new ClassWithList();
for(int i=0;i<obj.getNumberOfItems();i++)
println obj.getItem(i)
如果列表中没有元素,则会出现此问题,在这种情况下,范围将为(0..-1)
。当尝试读取负索引为-1
的项目时,它会倒计时并导致阵列索引超出边界异常。例如,下面的代码导致ArrayIndexOutOfBoundsException
class AdHocTests {
public static main(def args)
{
ClassWithList obj = new ClassWithList();
(0..obj.getNumberOfItems()-1).each {
println obj.getItem(it)
}
}
}
class ClassWithList
{
private def tempList = []
public int getNumberOfItems()
{
return 0;
}
public String getItem(int pIndex)
{
return tempList[pIndex];
}
}
如何获取(0..x)。在这种情况下,每个{}()
都使用x=0
?或者没有出路,我应该坚持传统的for(){}
。groovy是否提供了惊喜?根据,您可以使用半开放范围:
(0..<obj.getNumberOfItems()).each {
println obj.getItem(it)
}
(0..根据,您可以使用半开范围:
(0..<obj.getNumberOfItems()).each {
println obj.getItem(it)
}
(0..首先,在Groovy中,您不需要指定private属性,因为它是默认创建的。此外,getter和setter也是默认创建的,所以您只需调用它们
如果我理解了你的问题,你只想在列表中重复
清洁您的课堂将是:
类和列表{
List tempList = ["a","b","c"]
}
//为了迭代列表,您只需要使用each方法:
ClassWithList obj = new ClassWithList() //; Not necessary in groovy!!
(obj.tempList).each { def element ->
println element
}
答案将是:[a、b、c]
希望对您有所帮助首先,在Groovy中,您不需要指定private属性,因为它是默认创建的。而且,getter和setter也是默认创建的,所以您只需调用它们
如果我理解了你的问题,你只想在列表中重复
清洁您的课堂将是:
类和列表{
List tempList = ["a","b","c"]
}
//为了迭代列表,您只需要使用each方法:
ClassWithList obj = new ClassWithList() //; Not necessary in groovy!!
(obj.tempList).each { def element ->
println element
}
答案将是:[a、b、c]
希望能帮助你