我有以下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]; 我想做的是为映射中的每个条目创建键的真实部分:值对……我知道我没有以这种方式定义列表……我试图通过使用filesfile_key.put(键,值)来增强地图;但这并不能work...Maybe我在一个完全错误的方向上思考…该构造的背景是文件(file-1.bat、file-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,
],但这正是我想要避免的。
发布于 2011-12-28 03:51:16
您认为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;
} https://stackoverflow.com/questions/8648202
复制相似问题