【发布时间】:2016-09-21 13:38:06
【问题描述】:
假设我有一个结构,struct = %MyApp.MyModel{ filled_with_data: "true }。
如何获取结构名称(在我的情况下为MyApp.MyModel)?
【问题讨论】:
标签: elixir
假设我有一个结构,struct = %MyApp.MyModel{ filled_with_data: "true }。
如何获取结构名称(在我的情况下为MyApp.MyModel)?
【问题讨论】:
标签: elixir
你也可以通过模式匹配来获取结构名:
%name{} = struct
【讨论】:
它存储在一个名为 __struct__ 的字段中,因此是 struct.__struct__ == MyApp.MyModel。
【讨论】:
如果您需要将结构名称作为不带“Elixir”的字符串。前缀,但保留你可以做的任何模块前缀:
name = your_map.__struct__
|> Module.split
|> Enum.join(".")
【讨论】:
your_map.__struct__的等价物(其中your_map是Ecto.Schema.t结构),我在iex的刚才的结果中没有得到Elixir.前缀。跨度>
结构携带__struct__
其中的字段。所以,
struct.__struct__
应该这样做
【讨论】: