请为什么 tableroA 在没有问题的情况下运行, tableroB 在下一段代码中获取错误“...协议可以为{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
答案 0 :(得分:4)
由于|>
运算符的优先级,您的代码被解释为:
for cada <- s, fila <-[1,2,3], col <- [1,2,3], do: (
{cada, fila, col}
|>Enum.map(&({&1,2}))
|>Enum.into(HashDict.new)
)
要解决它,你可以在括号中理解:
(for cada <- s, fila <-[1,2,3], col <- [1,2,3], do: {cada, fila, col})
|> ...
或使用显式的do / end块:
for cada <- s, fila <-[1,2,3], col <- [1,2,3] do {cada, fila, col} end
|> ...