我想测试并查看数组中的所有内容是否都通过了我的检查,这是我目前正在做的以及我的幻想代码会使编译器崩溃。
电流:
def mylist = [1,2,3,4]
def presumeTrue = true
mylist.each{
if(it<0)presumeTrue=false
}
if(presumeTrue)println "Everything was greater than 0!!"
幻想:
def mylist = [1,2,3,4]
if(mylist*>0)println "Everything was greater than 0, but this sugar doesn't work."
是否有正确的方法将if测试应用于一行列表中的所有内容?
答案 0 :(得分:4)
使用every
method:
myList.every { it > 0 }
您尝试使用的运算符是“展开点”,即*.
(不是*
)。您需要使用方法名称(compareTo
),它接受一个参数。但是map
并不是你想要做的。
您不是要尝试将该方法应用于所有mylist
的成员,而是尝试将该方法的结果聚合到所有成员,更像是:
mylist.inject(true) { acc, n -> acc && n > 0 }
答案 1 :(得分:1)
这对我有用......
def mylist = [1,2,3,4]
if(!mylist.find {it < 1}) println "Everything was greater than 0, and this sugar DID work."