Erlang字符串:join vs io_lib:format

时间:2013-06-17 19:26:56

标签: erlang

我有一些代码,我将4个值与管道(“|”)连接起来。目前它以下列方式实施:

lists:flatten(io_lib:format("~s~s~s~s~s",[Id, Delim, Date, Delim, Signature])).

但是,我想知道改变使用string:join是否有任何好处(除了它看起来更干净)?

3 个答案:

答案 0 :(得分:4)

虽然string:join([Id,Date,Signature],"|").lists:flatten(io_lib:format("~s~s~s~s~s",[Id, Delim, Date, Delim, Signature])).给出相同的结果,但string:join是首选,因为它具有更好的可读性:

  • 该功能的名称描述了实际意图。
  • 简洁明了,读者不会因冗长而分心。

可读性至关重要,因为在项目期间,代码通常会多次读取

答案 1 :(得分:2)

它会稍微快一些,但更重要的是更容易阅读,而且我总是声称“清晰度为王”。

答案 2 :(得分:1)

只需使用

 [Id, $|, Delim,
      $|, Date,
      $|, Delim,
      $|, Signature]

可能有效,因为它已经是iolist()。所以你不必通过任何东西发送它。数据 已经是您寻求的串联。为了这样做而操纵数据并将其展平通常是一个错误,它最多会浪费时钟周期并占用更多的内存资源。