不能在匹配子句之外使用 ^xxx

cannot use ^xxx outside of match clauses

这个函数:

defp entries(query, page_number, page_size) do
  offset = page_size * (page_number - 1)

  query
  |> limit([_], ^page_size) # error
  |> offset([_], ^offset)
  |> Repo.all
end

给出一个例外:

cannot use ^pg_size outside of match clauses

这是为什么以及如何解决?

试试这个:

query
|> limit(page_size)
|> offset(offset)
|> Repo.all

这通常表示您没有从 Ecto.Query 中导入适当的宏。

您必须使用 ^(pin 运算符 - https://hexdocs.pm/elixir/Kernel.SpecialForms.html

query
|> limit(^page_size)
|> offset(^v_offset) # I don't know if offset var override offset function of Ecto
|> Repo.all

导致此错误的另一个可能原因是单词拼写错误。在我的例子中,它是 form 而不是 from