在 groovy 中,我有以下内容...
def response = [
modifications: []
]
Run Code Online (Sandbox Code Playgroud)
我想动态地添加到这张地图中,这样它就会像这样结束......
def response = [
modifications: [
userKnown :[
type: 'Boolean',
value: userKnown?.toBoolean()
]
]
]
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用下面的代码来做到这一点......
if (userKnown){
def userKnownVariable = [
userKnown :[
type: 'Boolean',
value: userKnown?.toBoolean()
]
]
response.modifications << userKnownVariable
}
Run Code Online (Sandbox Code Playgroud)
但我并没有完全得到我所追求的。有人可以帮助我解决我做错了什么。
谢谢
您在给定的示例中混合了两件事。modifications在您的地图中是List您使用时的类型,[]并且您希望有一个Map。要以这种方式实例化地图,您必须使用[:]
def response = [
modifications: [:]
]
def userKnown = [
userKnown: [
type: 'Boolean',
value: true
]
]
response.modifications << userKnown
assert response == [modifications: [userKnown: [type: 'Boolean', value: true]]]
Run Code Online (Sandbox Code Playgroud)
值得一提的一件事。考虑List在您的示例中使用。添加新键映射可能听起来合理在某些情况下,虽然它有一个显著的问题-每一个键的顺序modifications是不确定的,它取决于地图的实现(HashMap,TreeMap等等)。从业务逻辑的角度来看,您似乎正在尝试获取有关已应用/添加的所有修改的信息。List在这种情况下将是一个更好的选择 - 您可以跟踪应用每个修改的顺序,如果您在前端使用此响应 - 迭代列表并显示每个结果会更容易。
| 归档时间: |
|
| 查看次数: |
5026 次 |
| 最近记录: |