Size: a a a

2020 February 16

DF

Dmitry Frolov in ErlangRus
Нужен новый ключ - делай =>
источник

MK

Max K in ErlangRus
Aleksey Kluchnikov
Нет, если ключ есть, он меняет значение
Тогда это неоднозначность. Если => конструктор ключа, а := матчинг/изменение, то повторное использование => на cуществующем ключе должно вызывать ошибку. Одно время так вроде было, но тут могу ошибаться, память уже не та.
источник

AK

Aleksey Kluchnikov in ErlangRus
Спорный вопрос, суть в том что надо быть аккуратным с => и можно расслабиться с :=
источник

AK

Aleksey Kluchnikov in ErlangRus
Если получаиь в щи с повторным => пришлось бы писать проверки, в случаях когда неизвестно есть ли ключ. А так форснул и все.
источник

VS

Viacheslav Shevchenko in ErlangRus
=> - создание, обновление ключа
:= - матчинг
Как по мне все очень даже однозначно.
А вот еликсировский синтаксис работы с мапами причем разный в зависимости от ключа(строка, атом) иногда накаляет.
источник

RP

Roman Pushkov in ErlangRus
называть эликсировский разным в зависимости от типа ключа не совсем корректно — стрелочный вариант универсален
источник

RP

Roman Pushkov in ErlangRus
ну и := — это не только матчинг
источник

RP

Roman Pushkov in ErlangRus
1> M = #{a => a}.
#{a => a}
2> M#{a := b}.
#{a => b}
источник

VS

Viacheslav Shevchenko in ErlangRus
о втором варианте даже не знал
источник

VS

Viacheslav Shevchenko in ErlangRus
iex(1)> a = %{test: 123}
%{test: 123}
iex(2)> a.test
123
iex(3)> a."test"
warning: found quoted call "test" but the quotes are not required. Calls made exclusively of Unicode letters, numbers, and underscore do not require quotes
 iex:3

123
iex(4)> a[:test]
123
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Viacheslav Shevchenko
iex(1)> a = %{test: 123}
%{test: 123}
iex(2)> a.test
123
iex(3)> a."test"
warning: found quoted call "test" but the quotes are not required. Calls made exclusively of Unicode letters, numbers, and underscore do not require quotes
 iex:3

123
iex(4)> a[:test]
123
В эликсире еще хуже все:

iex(6)> %{day: 16} = Date.utc_today      
~D[2020-02-16]
iex(7)> Date.utc_today.day
16
iex(9)> Date.utc_today[:day]
** (UndefinedFunctionError) function Date.fetch/2 is undefined (Date does not implement the Access behaviour)
   (elixir) Date.fetch(~D[2020-02-16], :day)
   (elixir) lib/access.ex:267: Access.get/3
источник

DF

Dmitry Frolov in ErlangRus
Всё же эликсир не мил мне
источник

DF

Dmitry Frolov in ErlangRus
источник

СИ

Сергей Иванов in ErlangRus
Dmitry Frolov
Всё же эликсир не мил мне
нет повода комплексовать. я на этом жухле буду писать только если с голоду помирать альтернативап
источник
2020 February 17

a

arikai in ErlangRus
Roman Pushkov
1> M = #{a => a}.
#{a => a}
2> M#{a := b}.
#{a => b}
Насколько помню, для "модификации" мап := используется для обновления значения (требует уже наличия пары с таким ключом, иначе свалится), а вот => - добавление новых элементов
источник

A

Andrey in ErlangRus
так и есть
источник

A

Andrey in ErlangRus
В первом случае let it crash, если на входе не та мапа. А во втором долгое разбирательство, что же за херня случилась.
источник

AK

Aleksey Kluchnikov in ErlangRus
Andrey
В первом случае let it crash, если на входе не та мапа. А во втором долгое разбирательство, что же за херня случилась.
Лучше бы конечно компилятор предупреждал при попытке изменить не существующий ключ, но есть что есть
источник

A

Andrey in ErlangRus
а как он может об этом предупредить ? мапа может в рантайме строиться.
источник

AK

Aleksey Kluchnikov in ErlangRus
я считаю что и так хорошо, юнит тестом все ловится сразу
источник