【发布时间】:2013-02-24 04:55:24
【问题描述】:
列表可以为空。我想做:
def value = "";
def list = getList()
if (!list.isEmpty()){
value = list.first().foo
}
例如我发现了这种方式:
assert ( [].find()?.foo?:"empty" ) == "empty"
assert ([[foo:"notEmpty1"], [foo:"notEmpty2"]].find()?.foo?:"empty") == "notEmpty1"
有没有更好的方法?
谢谢! :)
编辑:
我使用[0]得到了很好的答案
assert ( [][0]?.foo?:"empty" ) == "empty"
assert ([[foo:"notEmpty1"], [foo:"notEmpty2"]][0]?.foo?:"empty") == "notEmpty1"
【问题讨论】:
-
为什么不
list?.get(0) -
列表不为空,但可以为空。所以
list?.get(0)会抛出一个 IndexOutOfBoundsException -
如果不是
List,而是Collection,请阅读这篇文章stackoverflow.com/questions/1671378/… -
我同意我可以使用像番石榴这样的外部库,但我正在寻找一个 100% 的常规解决方案。
-
在同一篇文章中你有它。由于 groovy 可以使用 java 的库,因此 java 解决方案是一个 groovy 解决方案。 100%
标签: groovy