【发布时间】:2018-01-02 15:01:59
【问题描述】:
我是 Elixir 的新手,但我的谷歌搜索和阅读并没有找到我当前问题的解决方案。我只在书籍和教程中看到了将单个列表参数传递给如下函数的示例:[ head | tail ]。
defmodule Math do
def double_each([head|tail]) do
[head * 2| double_each(tail)]
end
def double_each([]) do
[]
end
end
我需要传入两个列表,然后对它们执行一些操作,如下所示:
defmodule Pagination do
def getPaginatedList([], _, _, _) do
[]
end
def getPaginatedList([list], [paginated], f, l) when f == 1 do
Enum.take(list, l)
end
def getPaginatedList(_, [paginated], f, l) when l <= f do
paginated
end
def getPaginatedList([list], [paginated] \\ [], f, l) do
getPaginatedList(tl(list), paginated ++ hd(list), f, l - 1)
end
end
但是,当传入 a 的列表和 b 的列表时,我收到一个关于 function 子句不匹配的错误,如下面的错误所示:
iex(23)> Pagination.getPaginatedList(a, b, 1, 2)
** (FunctionClauseError) no function clause matching
in Pagination.getPaginatedList/4
pagination.ex:2: Pagination.getPaginatedList([1, 2, 3, 4, 5], [], 1, 2)
关于我可能做错了什么有什么想法吗? (抱歉,如果这是一个简单的问题要回答。经过几个小时的搜索和玩弄后,我无法找到任何答案。)
【问题讨论】:
标签: list function pagination elixir