List 将值重新指定给列表长生不老药

List 将值重新指定给列表长生不老药,list,enums,elixir,List,Enums,Elixir,我有一个结构(数据),其中实际值取决于客户提出请求的情况,但我无法重新分配它们。这是我的代码: 基础结构: Party: [ Sender: [ ] ] 还有一个关于客户真实价值的例子: Party: [ Sender: [ AgentUserSender: [ Name: "The_name", Type: "The_type", OtherIDs: [ {:OtherID, %{Description: "value

我有一个结构(数据),其中实际值取决于客户提出请求的情况,但我无法重新分配它们。这是我的代码:

基础结构:

Party: [
  Sender: [

  ]
]
还有一个关于客户真实价值的例子:

Party: [
  Sender: [
    AgentUserSender: [
      Name: "The_name",
      Type: "The_type",
      OtherIDs: [
        {:OtherID, %{Description: "value"}, "_value"},
        {:OtherID, %{Description: "value_1"}, "_value_1"}
      ],
      OtherKey: "other_value"
    ]
  ]
]
Party: [
  Sender: [
    TravelAgencySender: [
      Name: "NAME",
      IATA_Number: "xxxxxxxx",
      AgencyID: "agency"
    ]
  ]
以及我(糟糕)如何努力做到:

data[:Party][:Sender] = customer[:Party][:Sender]
另外还有一个问题:并非所有客户在结构上都有相同的字段。这是其他客户的另一个示例:

Party: [
  Sender: [
    AgentUserSender: [
      Name: "The_name",
      Type: "The_type",
      OtherIDs: [
        {:OtherID, %{Description: "value"}, "_value"},
        {:OtherID, %{Description: "value_1"}, "_value_1"}
      ],
      OtherKey: "other_value"
    ]
  ]
]
Party: [
  Sender: [
    TravelAgencySender: [
      Name: "NAME",
      IATA_Number: "xxxxxxxx",
      AgencyID: "agency"
    ]
  ]

非常感谢。

我相信您要做的是:

> data = [Party: [Sender: []]]
[Party: [Sender: []]]
> data = put_in(data[:Party][:Sender], ["something"])
[Party: [Sender: ["something"]]]
或者这个:

> data = [Party: [Sender: ["something"]]]
[Party: [Sender: ["something"]]]
> data = put_in(data[:Party][:Sender], data[:Party][:Sender] ++ ["something_else"])
[Party: [Sender: ["something", "something_else"]]]

#Alternatively update_in instead of put_in
> data = [Party: [Sender: ["something"]]]
[Party: [Sender: ["something"]]]
> data = update_in(data[:Party][:Sender], &(&1 ++ ["something_else"]))
[Party: [Sender: ["something", "something_else"]]]

最直接的方法是使用:

如果您想要合并值,或者以某种复杂的方式修改它,只需修改

{ sender, cust[:Party][:Sender] }

行返回作为第二个元组项所需的内容(第一个是获得的值,因此保持不变)。

仅将
客户
用作
数据
有什么不对?为什么需要更新一个基本为空的对象?