【问题标题】:Elixir HashDict (Protocol.UndefinedError) protocol Enumerable not implemented for {1, 1, 1}Elixir HashDict (Protocol.UndefinedError) 协议 Enumerable 未为 {1, 1, 1} 实现
【发布时间】:2015-09-03 19:45:44
【问题描述】:

请,为什么 tableroA 运行没有问题,而 tableroB 在下一个代码中得到错误“...protocol Enumerable not implemented for {1, 1, 1}”:

def tableroA do
### generamos la rejilla
    s=Enum.to_list(1..9)
    rejilla=for cada <- s,  fila <-[1,2,3], col <- [1,2,3], do: {cada, fila, col}
    convalor=Enum.map(rejilla, &({&1,2}))
    Enum.into(convalor, HashDict.new)                                   
end
def tableroB do
    ### generamos la rejilla
    s=Enum.to_list(1..9)
    for cada <- s,  fila <-[1,2,3], col <- [1,2,3], do: {cada, fila, col}
    |>Enum.map(&({&1,2}))
    |>Enum.into(HashDict.new)                                   
end

【问题讨论】:

    标签: dictionary hash pipe elixir enumerable


    【解决方案1】:

    由于|&gt; 运算符的优先级,您的代码被解释为:

    for cada <- s,  fila <-[1,2,3], col <- [1,2,3], do: (
      {cada, fila, col}
      |>Enum.map(&({&1,2}))
      |>Enum.into(HashDict.new)
    )
    

    要解决它,您可以将 for comprehension 放在括号中:

    (for cada <- s,  fila <-[1,2,3], col <- [1,2,3], do: {cada, fila, col})
    |> ...
    

    或使用显式执行/结束块:

    for cada <- s,  fila <-[1,2,3], col <- [1,2,3] do {cada, fila, col} end
    |> ...
    

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 2017-07-01
      • 2017-04-19
      • 2018-10-19
      • 2023-03-19
      • 2016-05-09
      • 2016-09-17
      • 2016-09-29
      • 1970-01-01
      相关资源
      最近更新 更多