MongoDB driver के लिए एक पैकेज में, मुझे एक अद्वितीय दस्तावेज़ आईडी उत्पन्न करने के लिए एक फ़ंक्शन की आवश्यकता थी।erlang: अब() v18 में बहिष्कृत, सबसे अच्छा संक्रमण क्या है
इस समारोह :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
सबसे अच्छा मैं के साथ आया था:
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 + ms) &&& 281474976710655
end
end
end
यह काम करता है, लेकिन मैं इसे सबसे अच्छा तरीका है नहीं लग रहा है।
कोई सुझाव?
आपकी पोस्ट के लिए धन्यवाद, मुझे जिस तरह से आपने इसे संभाला है उसे पसंद है। मैं एक रेपो [jerp/now] (https://github.com/jerp/now) बनाता हूं जहां मैंने अंत में जो किया वह मैंने किया। यह आपके उत्तर के करीब है – jerome
इसके अलावा, एक और मामले पर, मुझे एर्लांग-जोस के बारे में पता लगाना अच्छा लगता है। मैं ओपनएसएसएल पर एक बंदरगाह का उपयोग कर साइन संदेश करता हूं, मैं निकट भविष्य में आपकी परियोजना को देखूंगा। – jerome