【问题标题】:Difference between Object and %Object{}Object 和 %Object{} 的区别
【发布时间】:2021-10-01 18:04:04
【问题描述】:

我想知道这两个对象有什么区别 -> Object 和 %Object{}。

1)

  def get_parents() do
    Object
    |> select([m], {m.id, m.name})
    |> where([m], is_nil(m.parent_id))
    |> Repo.all()
  end
  1. def get_parents() do
      %Object{}
      |> select([m], {m.id, m.name})
      |> where([m], is_nil(m.parent_id))
      |> Repo.all()
    end
    

我将不胜感激。

【问题讨论】:

    标签: elixir ecto


    【解决方案1】:

    Object 是一个原子,代表module%Object{} 是在 Object 模块中声明的 struct 对象。

    Ecto.Query.select/3 有 atom 和 struct 的子句作为第一个参数传递,基本上,当传递 atom 时,会创建默认 struct 并进一步传递,如下所示(实际实现要复杂得多)

    def select(module, binding, expr) when is_atom(module),
      do: select(%module{}, binding, expr)
    

    我强烈建议您在成为Ecto 之前学习语言基础知识。

    【讨论】:

      猜你喜欢
      • 2012-07-19
      • 2019-10-19
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 2010-11-28
      相关资源
      最近更新 更多