2014-08-27 71 views
0

我有一个List<File>我想确保每个File元素都是一个目录,如果不是,则抛出异常。验证groovy中的收集元素

在Java中,我会做:

List<File> possibleDirs; 
... 
for (File possibleDir : possibleDirs) { 
    if (!possibleDir.isDirectory()) throw new Exception(); 
    ... 
} 

但我想知道是否有更好的方法来做到这一点在常规

回答

0

我想知道是否有更好的方式来做到这一点在groovy

你有什么好。你可以使用一些Groovy的ISMS就像使用闭包的迭代:

possibleDirs.each { file -> 
    if(!file.isDirectory()) { 
     // throw exception... 
    } 
} 

或者......

def allAreDirs = possibleDirs.every { file -> 
    file.isDirectory() 
} 
if(!allAreDirs) { 
    // throw exception... 
} 

我不认为这类原因确实是比任何你有什么更好的。反对every方法的论据是,只要知道存在问题,就必须访问先前的方法和您所描述的方法的每个文件。

编辑:

我想你也可以这样做:

if(possibleDirs.find { !it.isDirectory() }) { 
    // throw exception... 
} 
+0

我希望会有一些方法来测试映射到每一个元素,而不是迭代 – EdJoJob 2014-08-27 23:57:43

+1

这是什么你想完成你的for循环不满足? – 2014-08-28 00:27:45

+0

是一种更为实用的方法,而不是一种迭代方法。以及看看是否会有一个“应该”使用的常规成语 – EdJoJob 2014-08-29 01:01:35