eli*_*ocs 2 erlang string-formatting
我正在学习Erlang,我问自己什么是将time()输出转换为格式化时间字符串(HH:MM:SS)的最佳方法.我想出的代码是:
my_time() ->
{H, M, S} = time(),
integer_to_list(H) ++ ":" ++ integer_to_list(M) ++ ":" ++ integer_to_list(S).
Run Code Online (Sandbox Code Playgroud)
这段代码不会完全诀窍,因为它不会用分钟或秒来填充零.它还使用++运算符来连接不推荐的列表.
在Erlang中实现这个简单任务的正确方法是什么?
Nay*_*uki 12
一个正确的,易于理解的实现使用format(就像printf):
my_time() ->
{H, M, S} = time(),
io_lib:format('~2..0b:~2..0b:~2..0b', [H, M, S]).
Run Code Online (Sandbox Code Playgroud)
~2..0b是一个占位符,用于在基数10中打印一个整数,占用至少2个字符,并在左侧填充字符0.
参考文献:
如果您在紧密循环中调用函数,并且分析基准测试表明您的函数实际上是一个瓶颈,那么您应该只担心性能.