Перебор списка кортежей в эликсире с использованием Enum - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь перебрать список кортежей через Enum.map.

coordinates = [{0,0},{1,0},{0,1}]
newcoordinates = Enum.map(coordinates,fn({X,Y})->{X+1,Y+1})

Этот код недействителен. Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вы также можете использовать понимания :

for {x, y} <- [{0,0},{1,0},{0,1}], do: {x+1, y+1}

Понимания - синтаксический сахар для перечисления, поэтому он эквивалентен использованию Enum.

0 голосов
/ 28 августа 2018

Прежде всего, вам не хватает end после объявления функции. Во-вторых, в Elixir идентификаторы, начинающиеся с верхнего регистра, являются атомами, а нижний регистр - переменными, в отличие от Эрланга, где верхний регистр - переменные, а нижний регистр - атомы. Так что вам просто нужно сделать их строчными:

iex(1)> coordinates = [{0, 0},{1, 0},{0, 1}]
[{0, 0}, {1, 0}, {0, 1}]
iex(2)> newcoordinates = Enum.map(coordinates, fn {x, y} -> {x + 1, y + 1} end)
[{1, 1}, {2, 1}, {1, 2}]
...