我不認爲有辦法讓這個與in
工作。我能想到的最好的是寫一個自定義的方法,並運行,而不是像這樣:
boolean isIn(List domain, String target) {
domain.find { target ==~ it }
}
List myList = ["abc", "xyz", ~/a.+z/]
assert (isIn(myList, "abc")) == true
assert (isIn(myList, "xyz")) == true
assert (isIn(myList, "abz")) == true
assert (isIn(myList, "aby")) == false
其實,這是可能的,但你需要可以編寫自己的List
類:
class MyList extends ArrayList {
boolean isCase(Object o) {
find { o ==~ it }
}
}
def myList = new MyList()
myList.addAll(["abc", "xyz", ~/a.+z/])
assert ("abc" in myList) == true
assert ("xyz" in myList) == true
assert ("abz" in myList) == true
assert ("aby" in myList) == false
或者,覆蓋對列表中的實例元類isCase
方法:
def myList = ["abc", "xyz", ~/a.+z/]
myList.metaClass.isCase = { o ->
(delegate.find { o ==~ it }) as boolean
}
// asserts as before
要不好。正如我所預料的那樣。不管怎麼說,還是要謝謝你。 – 2012-02-16 10:46:46
@ T.Dabrowski對不起,我過早地否定;-) – 2012-02-16 10:48:57
@ T.Dabrowski順便說一句,如果[epidemian的回答你剛纔的問題(http://stackoverflow.com/a/8927935/6509)是正確的,你可以做[接受它](http://meta.stackexchange.com/a/5235/156393) – 2012-02-16 10:55:31