Я кэшировал кучу значений почтового индекса и длины в латах, используя функциональность erlangs ets.
Изобразите следующее ...
iex()> :ets.new(:postcode_cache, [:named_table])
:postcode_cache
iex()> :ets.insert(:postcode_cache, [{"OX495NU", "latlongvalue"},{"M320JG", "latlongvalue"}])
true
Это похоже на таблицу ets, которую я создал в своем приложении. Я хочу создать функцию, которая выбирает только записи из кэша, где почтовый индекс содержит подстроку того, что ввел пользователь. Есть ли способ сделать это, и если да, то как бы я реализовать эту функцию?
(В будущем я могу выбрать только значения, которые находятся на определенном расстоянии, используя значение lat-long, но это выходит за рамки этого вопроса).
Для ясности таблица похожа на следующий список эликсира ...
iex()> postcode_list = [{"OX495NU","latlong"}, {"M320JG", "latlong"}]
Функциональность, которую я хотел бы воспроизвести с помощью ets, выглядит примерно так ...
iex()> Enum.filter(list, fn({postcode, _}) -> if String.contains?(postcode, "OX49") end)
[{"OX495NU", "latlong"}]