Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir (巴达里耶罗)为什么它的投掷错误?_Elixir - Fatal编程技术网

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}) ->