簡體   English   中英

Groovy collect(?)變量和值以進行映射

[英]Groovy collect(?) variables and values to map

我正在研究一個Groovy腳本,它依賴於從Java繼承的“字段”中的值。 我需要能夠引用此字段(和值)列表來創建要使用的地圖。 我正在努力做到這一點的“時髦”方式。

我可以訪問(繼承)的內容:

dialogPartyASelection_7 = 'Denied'
dialogPartyBSelection_7  = 'Accepted' 
dialogPartyASelection_6 = 'Denied' 
dialogPartyBSelection_6 = 'Accepted'
dialogPartyBSelection_5 = 'Denied'
dialogPartyASelection_5 = 'Accepted'
dialogPartyBSelection_4 = 'Denied'
dialogPartyASelection_4 = 'Accepted'
dialogPartyBSelection_3 = 'Denied'
dialogPartyASelection_3 = 'Accepted'
dialogPartyBSelection_2 = 'Denied'
dialogPartyASelection_2 = 'Accepted'
dialogPartyBSelection_1 = 'Denied'
dialogPartyASelection_1 = 'Accepted' 

我想要得到的是:

 map = [
'dialogPartyASelection_7' : 'Denied',
'dialogPartyBSelection_7' : 'Accepted', 
'dialogPartyASelection_6' : 'Denied', 
'dialogPartyBSelection_6' : 'Accepted',
'dialogPartyBSelection_5' : 'Denied',
'dialogPartyASelection_5' : 'Accepted',
'dialogPartyBSelection_4' : 'Denied',
'dialogPartyASelection_4' : 'Accepted',
'dialogPartyBSelection_3' : 'Denied',
'dialogPartyASelection_3' : 'Accepted',
'dialogPartyBSelection_2' : 'Denied',
'dialogPartyASelection_2' : 'Accepted',
'dialogPartyBSelection_1' : 'Denied',
'dialogPartyASelection_1' : 'Accepted' ]

我將按照以下步驟“設置自我”(這些列表將在整個腳本中重復使用)

    def selectionsPartyA = [], selectionsPartyB = [], selections = [], PostSelections = [], PostChildrenSelections = [], 

PostSelections = [
                    '7',
                    '6',
                    '5',
                    '4',
                    '3',
                    '2',
                    '1'
                 ]                 

// selectionsPartyA
for (post in PostSelections) {
    selectionsPartyA += "dialogPartyASelection_"+post
    }

// selectionsPartyB
for (post in PostSelections) {
    selectionsPartyB += "dialogPartyBSelection_"+post
    }
selections.addAll(selectionsPartyB)  
selections.addAll(selectionsPartyA)

我嘗試使用已有的引用列表進行迭代,但是無法按預期引用“字段”或“值”。

像這樣?

class Test {
    String dialogPartyASelection_7 = 'Denied'
    String dialogPartyBSelection_7 = 'Accepted' 
    String dialogPartyASelection_6 = 'Denied' 
    String dialogPartyBSelection_6 = 'Accepted'
    String dialogPartyBSelection_5 = 'Denied'
    String dialogPartyASelection_5 = 'Accepted'
    String dialogPartyBSelection_4 = 'Denied'
    String dialogPartyASelection_4 = 'Accepted'
    String dialogPartyBSelection_3 = 'Denied'
    String dialogPartyASelection_3 = 'Accepted'
    String dialogPartyBSelection_2 = 'Denied'
    String dialogPartyASelection_2 = 'Accepted'
    String dialogPartyBSelection_1 = 'Denied'
    String dialogPartyASelection_1 = 'Accepted' 
}

def obj = new Test()
def propMap = obj.properties as Map
assert propMap['dialogPartyASelection_5'] == 'Accepted'

謝謝您的幫助,在@Steinar的建議下,我已經可以做到如下:

 def selectionsPartyA = [], selectionsPartyB = [], selections = [], PostChildrenSelections = [], 

PostSelections = ['7','6','5','4','3','2','1']                 

// selections
for (post in PostSelections) {
    selectionsPartyA += "dialogPartyASelection_"+post
    selectionsPartyB += "dialogPartyBSelection_"+post
    }
selections.addAll(selectionsPartyB)  
selections.addAll(selectionsPartyA)

dialogPartyASelection_7 = 'Denied'
dialogPartyBSelection_7  = 'Accepted' 
dialogPartyASelection_6 = 'Denied' 
dialogPartyBSelection_6 = 'Accepted'
dialogPartyBSelection_5 = 'Denied'
dialogPartyASelection_5 = 'Accepted'
dialogPartyBSelection_4 = 'Denied'
dialogPartyASelection_4 = 'Accepted'
dialogPartyBSelection_3 = 'Denied'
dialogPartyASelection_3 = 'Accepted'
dialogPartyBSelection_2 = 'Denied'
dialogPartyASelection_2 = 'Accepted'
dialogPartyBSelection_1 = 'Denied'
dialogPartyASelection_1 = 'Accepted' 

test = [:]
for (entry in selections){
test.put(entry, getProperty(entry))
}
assert test  == [dialogPartyBSelection_7:Accepted, dialogPartyBSelection_6:Accepted, dialogPartyBSelection_5:Denied, dialogPartyBSelection_4:Denied, dialogPartyBSelection_3:Denied, dialogPartyBSelection_2:Denied, dialogPartyBSelection_1:Denied, dialogPartyASelection_7:Denied, dialogPartyASelection_6:Denied, dialogPartyASelection_5:Accepted, dialogPartyASelection_4:Accepted, dialogPartyASelection_3:Accepted, dialogPartyASelection_2:Accepted, dialogPartyASelection_1:Accepted]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM