我看到一个代码片段使用make_ref()了这个功能,但不确定它的可用性。
hexdocs 说:
返回一个几乎唯一的引用。
返回的引用会在大约 2^82 次调用后重新出现;因此它对于实际用途来说是足够独特的。
由编译器内联。
但它并没有真正说明何时或为什么我应该使用它。我为什么要使用它以及何时应该使用它?在我看来,它所做的只是生成随机数。为什么我不能只使用某种随机数生成器?
这是它在终端上的作用:
iex(1)> make_ref()
#Reference<0.3569050097.3772514305.191818>
iex(2)> make_ref()
#Reference<0.3569050097.3772514305.191837>
iex(3)> make_ref()
#Reference<0.3569050097.3772514307.194286>
Run Code Online (Sandbox Code Playgroud)
:erlang.make_ref/0返回一个在连接节点中唯一的引用。
它主要是UUID时代之前的遗产。也就是说,仅仅随机生成器是不够的:它应该在不同的机器上生成一些独特的东西。
UUID除非您担心内存负载,否则可能是引用的不错选择:引用的效率更高。
此外,调用make_ref[可以说] 比处理某种 UUID 生成器更方便。