Jaki jest kanoniczny sposób tworzenia "stałej tablicy" z dostępem losowym w języku Elixir? (na przykład stosowana w obliczeniach CRC lub AES skrzynki S)Jaki jest zalecany sposób na wyrównanie "tablicy stałej" w eliksiru?
Z Erlang tle I Załóżmy, że „tablica” powinien sam być krotka, ponieważ dostęp poprzez elem/2
/element/2
wydaje O (1) (funkcja BIF_RETTYPE element_2(BIF_ALIST_2)
w erts/emulator/beam/bif.c
).
Ale co z zakresem przechowywania, ponieważ Erlang/Elixir nie ma globaliów? Mój nos mówi, że to miejsce to @module_attribute
, ale nie jestem do końca pewien, gdzie i kiedy rozszerzono atrybuty @.
Znany jest problem z Erlang: po -define(LARGE_LIST,[...])
w module, a następnie użyj ?LARGE_LIST
w funkcjach. Wartość jest ponownie konstruowana przy każdym wywołaniu funkcji. Rozwiązaniem było skonstruowanie go na początku uruchamiania aplikacji i przejście do funkcji wymagających go jako jednego z parametrów.
Czy produkt @module_attribute
firmy Elixir rozwiązuje ten problem, czy jest traktowany jako fantazyjne rozszerzenie makr? Czytałem oficjalne dokumenty na module attributes, ale nadal jestem zdezorientowany.