小编jer*_*ome的帖子

erlang:now()在v18中已弃用,最佳转换是什么

MongoDB驱动程序的包中,我需要一个函数来生成唯一的文档ID.

此函数使用:erlang.now()v18中不推荐使用的函数

我寻求如何迁移的帮助,但没有成功.

我的实际代码(缩短):

defmodule MyModule_v17 do
  use Bitwise, only_operators: true
  def gen_trans_prefix do
    {gs, s, ms} = :erlang.now
    (gs * 1000000000000 + s * 1000000 + ms) &&& 281474976710655
  end
end
Run Code Online (Sandbox Code Playgroud)

最好的我提出来:

defmodule MyModule_v18 do
  use Bitwise, only_operators: true
  Kernel.if Keyword.get(:erlang.module_info, :exports) |> Enum.any?(fn({:system_time, 1}) -> true; (_) -> false end) do
    def gen_trans_prefix do
      :erlang.system_time(:micro_seconds) &&& 281474976710655
    end
  else
    def gen_trans_prefix do
      {gs, s, ms} = :erlang.now
      (gs * 1000000000000 + s * 1000000 …
Run Code Online (Sandbox Code Playgroud)

elixir

6
推荐指数
2
解决办法
2108
查看次数

标签 统计

elixir ×1