2016-03-21 26 views
0
iex(1)> a = :erlang.timestamp 
{1458, 585479, 931609} 
iex(2)> b = :erlang.timestamp 
{1458, 585484, 197713} 
iex(3)> :erlang.now_diff(a,b) 
** (UndefinedFunctionError) undefined function: :erlang.now_diff/2 
    :erlang.now_diff({1458, 585479, 931609}, {1458, 585484, 197713}) 

Bu yüzden iksondaki erlang işlevlerine erişebilir, bunlara :erlang erişebilir, ancak now_diff/2 tanımsızdır.Bu erlang işlevi neden tanımsız?

Bu zamanlayıcının standart erlang modülü olmadığını ve gerekli/içe aktarılması gerektiğini düşündüm ama nasıl olduğunu anlayamıyorum?

P.S. Bu erlang işlevi gibi yüksek hassasiyetli zaman damgaları farkı hesaplamak için fonksiyona sahip değilse, timex'i öneride bulunmayın. Okuma belgeleri bulamadım.

+1

Deneme:: timer.now_diff (a, b) ' – helios35

+1

@ helios35 haklıdır, ancak tamlık açısından, timex'in şu işlevi vardır: https://github.com/bitwalker/timex/blob/master/ lib/time/time.ex # L391 Hatta ': timer.now_diff/2' içinde kullanır :) – tkowal

+0

@tkowal, ana sayfada –

cevap

5

Kullanım

:timer.now_diff(a, b) 

Fonksiyonlar onlar erlang fonksiyonları çünkü :erlang öneki, ama değil onlar erlang modülünün parçası olduğundan. now_diff, zamanlayıcı modülünün bir parçasıdır, dolayısıyla :erlang yerine :timer kullanırsınız.