【发布时间】:2015-02-23 05:40:54
【问题描述】:
我正在尝试编译以下 erlang 代码:
my_time_func(F) ->
{Mega, Mini, Micro} = now(),
F,
{SMega,SMini,SMicro} = now(),
{FMega,FMini,FMicro} = {SMega - Mega, SMini - Mini, SMicro - Micro},
if
FMicro < 0 -> %guard 1
if
FMini - 1 < 0 -> {FMega - 1, FMini, FMicro + (FMicro * 2) + 1};
true > 0 -> {FMega, FMini - 1, FMicro + (FMicro * 2) + 1};
end;
true -> %guard 2
if
FMini < 0 -> {FMega - 1, FMini + (FMini * 2) + 1, FMicro} ;
true > 0 -> {FMega,FMini,FMicro} ;
end;
end.
但是它说我在第 19 行结束之前有一个语法错误(这是第一个结束)。我错过了某种分号吗?
最初我打算在代码审查中发布这个,因为这个代码非常“丑陋”。有没有更好的方法来做这样的事情? (定时函数)不使用内置函数,最好单独使用 erlang 模块。
【问题讨论】:
-
另一种解决方案是使用
timer模块中的函数,timer:tc/1/2/3完成所有操作,或者如果您只想要时差,则使用timer:now_diff/2。
标签: performance datetime erlang