从groovy列表中逐个返回项
我是Groovy的新手,我有点挣扎。我有一个列表,每次调用该函数时,我都希望返回列表中的项目从groovy列表中逐个返回项,groovy,Groovy,我是Groovy的新手,我有点挣扎。我有一个列表,每次调用该函数时,我都希望返回列表中的项目 def list = [ "blog1", "blog2", "blog3" ] // Result variable for storing loop results. def result = '' // Closure to fill result variable with value. def createResult = { if (!it) { // A
def list = [
"blog1",
"blog2",
"blog3"
]
// Result variable for storing loop results.
def result = ''
// Closure to fill result variable with value.
def createResult = {
if (!it) { // A bit of Groovy truth: it == 0 is false
result = '0'
} else {
result += it
}
}
// Groovy for-each loop.
for (i in list) {
createResult(i)
}
return result
现在我返回以下值:blog1blog2blog3
我想看看:
此代码的第一次调用返回blog 1,函数的第二次调用返回blog 2等
如何解决这个问题?您正在描述一个
迭代器
如果您想要一个封装迭代器并处理列表结尾的闭包,则可以执行以下操作:
def closure = { ->
def i = ['item1', 'item2', 'item3'].iterator();
{ -> i.hasNext() ? i.next() : null }
}
def clos = closure()
println clos()
println clos()
println clos()
println clos()
其中打印:
item1
item2
item3
null
虽然不能100%确定这是您想要的,但很难从问题中辨别…您正在描述一个
迭代器
如果您想要一个封装迭代器并处理列表结尾的闭包,则可以执行以下操作:
def closure = { ->
def i = ['item1', 'item2', 'item3'].iterator();
{ -> i.hasNext() ? i.next() : null }
}
def clos = closure()
println clos()
println clos()
println clos()
println clos()
其中打印:
item1
item2
item3
null
虽然不是100%确定这就是你想要的,但很难从问题中判断…你需要改变
result += it
致:
但最好使用迭代器:
def iter = list.iterator()
def getListValue = {iterator ->
iterator.hasNext() ? iterator.next() : null
}
def createResult = getListValue.curry(iter)
println createResult()
println createResult()
println createResult()
你需要改变
result += it
致:
但最好使用迭代器:
def iter = list.iterator()
def getListValue = {iterator ->
iterator.hasNext() ? iterator.next() : null
}
def createResult = getListValue.curry(iter)
println createResult()
println createResult()
println createResult()
你能更好地解释这个问题吗?我无法从上面的代码中看出您希望得到什么或看到什么…您能更好地解释这个问题吗?我无法从上面的代码中看到您希望返回或看到的内容。。。