【发布时间】:2025-11-26 01:20:06
【问题描述】:
在 Elixir 语言中创建具有随机访问的“const 数组”的规范方法是什么? (例如用于 CRC 计算或 AES s-box 的一种)
从 Erlang 背景我假设,“数组”本身应该是一个 元组,因为通过 elem/2 / element/2 访问似乎是 O(1)(@ 中的函数 BIF_RETTYPE element_2(BIF_ALIST_2) 987654325@)。
但是存储范围呢,因为 Erlang/Elixir 没有全局变量?我的鼻子说@module_attribute 会是这个地方,但我不太确定@attributes 的扩展位置和时间。
有一个已知的 Erlang 问题:当你在模块中 -define(LARGE_LIST,[...]) 然后在函数中使用 ?LARGE_LIST 时。该值在每次函数调用时重新构造。解决方案是在应用程序启动时构建一次,并将其作为参数之一传递给需要它的函数。
Elixir 的@module_attribute 是否解决了这个问题,还是被视为花哨的宏扩展?我已经阅读了module attributes 上的官方文档,但我仍然感到困惑。
【问题讨论】:
标签: arrays erlang constants elixir