elixir 中 make_ref() 函数的一些用法是什么?

Igg*_*ggy 6 elixir

我看到一个代码片段使用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)

Ale*_*kin 8

:erlang.make_ref/0返回一个在连接节点中唯一的引用。

它主要是UUID时代之前的遗产。也就是说,仅仅随机生成器是不够的:它应该在不同的机器上生成一些独特的东西。

UUID除非您担心内存负载,否则可能是引用的不错选择:引用的效率更高

此外,调用make_ref[可以说] 比处理某种 UUID 生成器更方便。