gpt4 book ai didi

Groovy:用修改后的值替换列表中的所有值

转载 作者:行者123 更新时间:2023-12-05 06:42:24 25 4
gpt4 key购买 nike

我有一个包含值列表的 map 。我需要使用该值的编码/加密版本更新所述列表中的每个值。

map 和列表可以嵌套在任何地方,我只是得到了一条更改内容的路径。例如 myMap.myList.*myObject

我的列表 map 如下所示:

 mymap {"myList" : [{myObject : "aaa" }, {myObject : "bbb"}]}

我得到了这条路径:'myList*myObj'

尝试更新值的代码:

     myMap = [myList : [[myObject : "aaa"], [myObject : "bbb"]]];
path = 'myList*.myObject';
result = Eval.x(myMap, 'x.' + path + '="somenewvalue"');

这有效并用'somenewvalue'替换所有值但是我需要用其原始值的加密版本替换每个值所以'aaa'用'aaa'的加密版本和'bbb'用加密版本'bbb' 等等。

但这会将所有值设置为相同的值。如何将值设置为不同的值?

最佳答案

    def myMap = ["myList" : [[myObject : "aaa" ], [myObject : "bbb"]]]
def theList = myMap["myList"].collect { [myObject: it.myObject.toUpperCase()]}
myMap["myList"] = theList

println myMap

这可以创建一个全大写的版本 - 所以如果你有 encrypt(blah) 函数,你可以这样做:

    def myMap = ["myList" : [[myObject : "aaa" ], [myObject : "bbb"]]]
def theList = myMap["myList"].collect { [myObject: encrypt(it.myObject)]}
myMap["myList"] = theList

我确定它可以被清理干净

关于Groovy:用修改后的值替换列表中的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37263528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com