2013-06-17 3 views
2

У меня есть код, в котором я беру 4 значения и соединяю их с трубой («|»). В настоящее время она осуществляется следующим образом:Erlang string: join vs io_lib: format

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

Но мне интересно, если есть какие-либо преимущества для изменения использовать строку: присоединиться (другие, чем это кажется чище)?

ответ

4

Хотя string:join([Id,Date,Signature],"|"). и lists:flatten(io_lib:format("~s~s~s~s~s",[Id, Delim, Date, Delim, Signature])). дают тот же результат, string:join является предпочтительным, так как имеет лучшую читаемость:

  • Название функции описывает фактическое намерение.
  • Это краткий, поэтому читатель менее отвлекается на многословие.

Читаемость имеет первостепенное значение, так как код часто читал много, много раз в течение проекта

2

Было бы немного быстрее, но что еще более важно читать, и, как я всегда утверждаю, что «Ясность - король».

1

Просто используя

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

может быть действительным, так как это уже iolist(). Таким образом, вам не нужно отправлять его через что-либо. Данные - это уже конкатенация, которую вы ищете. Манипулирование данными и их сглаживание ради этого чаще всего являются ошибкой, которая в лучшем случае тратит часы на циклы и использует больше ресурсов памяти.