我有以下groovy脚本:
#!/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];
我想要做的是为地图中的每个条目创建密钥的真实部分:值对...我知道我没有以这种方式定义列表... 我试图通过使用文件[file_key] .put(key,value)来增强地图;但这不起作用......可能是我正在思考一个完全错误的方向...... 该构造的背景是在文件(file-1.bat,file-1等)中,我将检查作为Map给出的内容是否存在
'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,
],
但这正是我想要避免的......
答案 0 :(得分:1)
您认为put()
将解决您的问题是正确的,但您无法将地图元素放入列表中。您需要先创建一个可以put
的地图,然后将结果地图指定为输出。
例如:
files.each {
file_key, file_value -> println file_key;
def file_map = [:];
file_value.each {
file_content -> println "\t"+file_content;
file_map.put(file_content, true);
}
files[ file_key ] = file_map;
}