[英]Accessing elements of a map of maps using a string in Groovy
鑒於我有一張地圖,如:
def myMap = [ b : [ c:"X" ] ]
還有一個字符串
def key = 'b.c'
我想查看使用密鑰獲取值“X”的選項。
我自己想出了兩種方法來實現這一點,但我對這些解決方案不太滿意:
1) Eval.me("theMap", myMap, "theMap.$key")
2) mayMap."$key.split('\\.')[0]"."$key.split('\\.')[1]"
有人在 Groovy 中有更好的方法來做到這一點嗎?
一種方便的方法是使用實現 Map 的ConfigObject 。
def myMap = [b:[c:'X', d: 'Y'], a:[n:[m:[x:'Y']]]] as ConfigObject
def props = myMap.toProperties()
assert props['b.c'] == 'X'
assert props.'b.c' == 'X'
assert props.'a.n.m.x' == 'Y'
優點:
恕我直言,它不是ConfigObject
,它可以解決問題,它的Properties
(來自ConfigObject.toProperties()
)。 看看並嘗試:
def props = new ConfigSlurper().parse("""
b {
c = 'X'
d = 'Y'
}
a {
n {
m {
x:'Y'
}
}
}""")
assert props['b.c'] == 'X'
assert props.'b.c' == 'X'
assert props.'a.n.m.x' == 'Y'
'passed'
斷言失敗:
assert props['b.c'] == 'X'
| | |
| [:] false
[b:[c:X, d:Y], a:[n:[m:[:]]], b.c:[:]]
at ConsoleScript7.run(ConsoleScript7:14)
我真的希望ConfigObject
可以用像上面這樣的組合鍵進行索引
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.