Elixir 使用模块属性累积的映射:true

Elixir 使用模块属性累积的映射:true,elixir,Elixir,我可以像这样使用“累积”选项将模块属性注册为true Module.register_attribute __MODULE__, :structs, accumulate: true for line <- [%{"some" => %{"test1" => 1, "test2" => 2}}, %{"some" => %{"test1" => 3, "test2" => 4}}] do @structs %Struct{

我可以像这样使用“累积”选项将模块属性注册为true

 Module.register_attribute __MODULE__, :structs, accumulate: true


  for line <- [%{"some" => %{"test1" => 1, "test2" => 2}}, %{"some" => %{"test1" => 3, "test2" => 4}}] do
    @structs %Struct{
        some: line["some"]
      }
  end
但是如果我想要一张地图呢?如何做到这一点

我尝试了以下方法来定义
@tests[v]
,但没有成功

  Module.register_attribute __MODULE__, :tests, accumulate: true

  @moduledoc """
  for line <- [%{"some" => %{"test1" => 1, "test2" => 2}}, %{"some" => %{"test1" => 3, "test2" => 4}}] do
    Enum.each(line["some"], fn {k, v} ->
      @tests[v] %Struct{
          some: k
      }
    end)
  end
Module.register\u属性\uuuuuu模块:测试,累积:真
@moduledoc”“”
对于行%{“test1”=>1,“test2”=>2},%%{“some”=>3,“test2”=>4}]do
Enum.each(行[“some”],fn{k,v}->
@测试[v]%结构{
一些:k
}
(完)
结束

您不能。
累加:true
创建列表,这是


唯一可能的解决方案是使用生成不同的变量,并用于动态更新变量。

所以唯一的解决方案是使用宏权限?为每个映射使用不同的变量?我不明白为什么需要宏?
模块。register\u属性接受变量的动态名称。可以t用于创建和更新具有动态名称的变量。如何从同一模块内的函数动态访问这些属性?get_attribute returns“无法使用参数Talkyng.MediaTopics调用get_属性,因为模块已编译“您应该了解什么是编译时间与运行时,以及它们之间的区别。我已经发布了更正的代码和解释
  Module.register_attribute __MODULE__, :tests, accumulate: true

  @moduledoc """
  for line <- [%{"some" => %{"test1" => 1, "test2" => 2}}, %{"some" => %{"test1" => 3, "test2" => 4}}] do
    Enum.each(line["some"], fn {k, v} ->
      @tests[v] %Struct{
          some: k
      }
    end)
  end