Size: a a a

2018 November 25

(

( in pro.elixir
Это константа времени компиляции
источник

RS

Roman Suleymanov in pro.elixir
хм, то есть неизменна?
источник

(

( in pro.elixir
Да
источник

RS

Roman Suleymanov in pro.elixir
тогда вопрос, как в модуле хранить map, чтобы его можно было доставать из модуля и менять
источник

DS

Dmitry Shpagin in pro.elixir
Roman Suleymanov
тогда вопрос, как в модуле хранить map, чтобы его можно было доставать из модуля и менять
Пока напоминает стейт генсервера)
источник

(

( in pro.elixir
Roman Suleymanov
тогда вопрос, как в модуле хранить map, чтобы его можно было доставать из модуля и менять
Ну, смысл в том, что эликсир - это чисто функциональный язык и модуль != класс из джавы. То есть, у модуля нет состояния, это просто набор функций. Чтобы действительно хранить состояние как в ООП, вам нужен генсервер
источник

RS

Roman Suleymanov in pro.elixir
хорошо
источник

RS

Roman Suleymanov in pro.elixir
у меня и так GenServer)
источник

RS

Roman Suleymanov in pro.elixir
тогда по другому

map = %{}
strings = ["one", "two"]
for string <- strings, do: map = Map.merge(map, get_map(string))

почему map пустой остается
это внутри одной функции
источник

(

( in pro.elixir
Потому что в эликсире вообще нет такого понятия, как переменные
источник

DS

Dmitry Shpagin in pro.elixir
Есть еще вариант в env приложения хранить стейт, и можно его редактировать в рантайме, но так лучше не делать
https://gist.github.com/SofaKing18/8c33e06aba3376ab8dccb44e5c551e0c
источник

RS

Roman Suleymanov in pro.elixir
ну да, это плохой вариант для больших списков
источник

RS

Roman Suleymanov in pro.elixir
в итоге, что мне сделать, чтобы получить смерженный map после прогона цикла?)
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Roman Suleymanov
тогда по другому

map = %{}
strings = ["one", "two"]
for string <- strings, do: map = Map.merge(map, get_map(string))

почему map пустой остается
это внутри одной функции
map = Enum.reduce(strings, map, &Map.merge(&2, get_map(&1)))
источник

DS

Dmitry Shpagin in pro.elixir
Roman Suleymanov
ну да, это плохой вариант для больших списков
это плохой вариант - потому что так не принято делать) а что и в каком количестве сюда засунешь - без разницы
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Чтобы в map что-то изменилось в блоке, где вызывается for нужно присваивать - например вот так, вместо for - Enum.reduce
источник

RS

Roman Suleymanov in pro.elixir
источник

RS

Roman Suleymanov in pro.elixir
map = Enum.reduce(strings, map, &Map.merge(&2, get_map(&1)))
источник

RS

Roman Suleymanov in pro.elixir
спасибо тебе
источник

RS

Roman Suleymanov in pro.elixir
&1 &2 - это 1ый и 2ой аргумент, а почему &Map.merge с &?
источник