2

我有一些代码,我在其中获取 4 个值并用管道(“|”)将它们连接起来。目前它以下列方式实施:

列表:flatten(io_lib:format("~s~s~s~s~s",[Id, Delim, Date, Delim, Signature]))。

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

4

3 回答 3

4

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

  • 函数的名称描述了实际意图。
  • 它简洁明了,因此读者不会被冗长分散注意力。

可读性是最重要的,因为在一个项目中代码经常被阅读很多次

于 2013-06-17T20:18:28.890 回答
2

它会稍微快一点,但更重要的是更容易阅读,正如我一直声称的“清晰为王”。

于 2013-06-17T19:59:50.360 回答
1

只是使用

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

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

于 2013-06-20T10:13:28.813 回答