Elixir (巴达里耶罗)为什么它的投掷错误?
简单的长生不老药程序,将奇数和偶数分开,然后打印出来Elixir (巴达里耶罗)为什么它的投掷错误?,elixir,Elixir,简单的长生不老药程序,将奇数和偶数分开,然后打印出来 iex(22)> c("testmap.ex") testmap.ex:1: warning: redefining module TestModule [TestModule] iex(23)> TestModule.test_map_reduce ** (BadArityError) #Function<0.56012634/2 in TestModule.pretty_print/1> with arity
iex(22)> c("testmap.ex")
testmap.ex:1: warning: redefining module TestModule
[TestModule]
iex(23)> TestModule.test_map_reduce
** (BadArityError) #Function<0.56012634/2 in TestModule.pretty_print/1> with arity 2 called with 1 argument ({"even", [8, 6, 4, 2]})
(elixir) lib/enum.ex:1047: anonymous fn/3 in Enum.map/2
(stdlib) lists.erl:1262: :lists.foldl/3
(elixir) lib/enum.ex:1047: Enum.map/2
文件:testmap.ex
defmodule TestModule do
def test_map_reduce do
list = [1,2,3,4,5,6,7,8,9]
map = Enum.reduce list, %{}, fn(n, acc) ->
key = getKey(n)
case acc[key] do
nil -> Map.put acc, key, [n]
list -> Map.put acc, key, [n|list]
end
end
pretty_print(map)
end
def getKey(n) do
case rem n, 2 do
0 -> "even"
_ -> "odd"
end
end
def pretty_print(number_map) do
Enum.map number_map, fn(k, v) ->
IO.inspect k
IO.inspect v
end
end
end
您正在向传递给的匿名函数传递2个参数-该函数的arity应为1 试试这个:
Enum.map number_map, fn({k, v}) ->
{“偶数”,[8,6,4,2]}
是由2个元素组成的元组
Enum.map number_map, fn({k, v}) ->