如何检查列表是否包含子列表(子列表...)或"根"中的键或值,是否可以获得"路径"?
这个containsValue或containsKey似乎只是查看列表的根目录
伪示例:
//This is my list
list = [languages:[_clazz:"basics.i18n.Language", messages:[_clazz:"basics.i18n.Message"]]]
list.containsKey("languages") // return true
list.containsValue("basics.i18n.Language") // return false where I want true
list.containsKey("messages") // return false // return false where I want true
list.containsValue("basics.i18n.Message") // return false where I want true
Run Code Online (Sandbox Code Playgroud)
在Groovy中没有任何内容我没有想到,但你可以自己编写并添加它们Map(你拥有的是一个Map,而不是List你已经命名的变量)
Map.metaClass.deepContainsKey = { value ->
delegate.containsKey(value) ?:
delegate.values().findAll { it instanceof Map }.findResult { it.deepContainsKey(value) } ?:
false
}
Map.metaClass.deepContainsValue = { value ->
delegate.containsValue(value) ?:
delegate.values().findAll { it instanceof Map }.findResult { it.deepContainsValue(value) } ?:
false
}
Run Code Online (Sandbox Code Playgroud)
那么,给你的地图:
def map = [languages:[_clazz:"basics.i18n.Language", messages:[_clazz:"basics.i18n.Message"]]]
Run Code Online (Sandbox Code Playgroud)
所有这些断言都通过了:
assert map.deepContainsKey("messages")
assert map.deepContainsValue("basics.i18n.Message")
assert map.deepContainsValue("basics.i18n.Language")
assert !map.deepContainsKey("missing")
assert !map.deepContainsValue("novalue")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |