对象和 %Object{} 之间的区别

Bor*_*bar 1 elixir ecto

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

1)

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

我将不胜感激的解释。

Ale*_*kin 6

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

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

def select(module, binding, expr) when is_atom(module),
  do: select(%module{}, binding, expr)
Run Code Online (Sandbox Code Playgroud)

我强烈鼓励您在成为 . 语言之前先学习语言基础知识Ecto