我有这样的数据,
params = [10, on]
我想在列表中只保留int,我在下面做了,
def myList = []
params.each(){
if( it != 'on'){
myList.push(it)
}
}
println myList
买我得到了这样的结果
[1,0]
不是[10]
答案 0 :(得分:0)
如果你想获得整数params
条目的列表,你可以在groovy中非常简洁:
def myList = params.findAll{it.isInteger()}
此代码遍历params
并评估每个元素的闭包,并且仅当评估返回true
时,该元素才会添加到myList
。
答案 1 :(得分:0)
您要为params
打印的数据和您用于each
的数据不同。如果你有一个param列表,你的代码就可以工作(即使each
是错误的工具,请使用findAll
)。 E.g:
def params = [10, 'on']
assert params.findAll{ it!='on' } == [10]
但是代码中的params
是字符串10
(而不是数字10和字符串on
的列表)。由于可以迭代字符串以获取每个字符,因此会得到错误的结果。 E.g:
assert '10'.collect()==['1','0']
PS:始终使用findAll
来过滤您的数据,并使用collect
来映射它们。带有一些外部var的each
很麻烦。