2011-12-27 103 views
0

我有以下的常規腳本:創建一個鍵:值對動態地

#!/usr/bin/env groovy 
def files = [ 
    'file-1.bat' : 
     [  
      'content-1-1', 
      'content-1-2', 
      'content-1-3' 
     ],  
    'file-1' : 
     [  
      'content-unix-1-1', 
      'content-unix-1-2', 
      'content-unix-1-3', 
     ],  

    'file-2.bat' : 
     [  
      'content-2-1', 
      'content-2-2', 
      'content-2-3' 
     ],  
    'file-2' : 
     [  
      'content-unix-2-1', 
      'content-unix-2-2', 
      'content-unix-2-3', 
     ],  
] 

files.each { 
    file_key, file_value -> println file_key; 
    file_value.each { 
     file_content -> println "\t"+file_content; 
     files[ file_key ] = [file_content : true]; 
    } 
} 

println ' Upgraded content'; 

files.each { 
    file_key, file_value -> println file_key; 
    file_value.each { 
     file_content -> println "\t"+file_content; 
    } 
} 

下面的幾行引起我的問​​題:

files[ file_key ] = [file_content : true]; 

什麼我想要做的是創造每個條目在地圖中也是key:value對的真正部分...我知道我沒有以這種方式定義列表... 我試圖通過使用文件[file_key] .put(核心價值);但這不起作用...可能是我在一個完全錯誤的方向想... 該構造的背景是在文件(文件1.bat,文件1等),我會檢查給定的地圖內容存在

'file-1.bat' : [  
    'content-1-1', 
    'content-1-2', 
    'content-1-3' 
], 

我能做到以下幾點:

'file-1.bat' : [  
    'content-1-1' : false, 
    'content-1-2' : false, 
    'content-1-3' : false, 
], 

但是這正是我想避免...

回答

1

你是正確的思想,put()將解決您的問題,但不能將地圖元素放入列表中。您需要先創建一個可以成爲put的地圖,然後將結果地圖分配爲輸出。

例如:

+0

二手[http://groovyconsole.appspot.com/](http://groovyconsole.appspot.com/)來驗證這一點;非常便利。 – philofinfinitejest