Скажем, мы хотим вычислить разницу между двумя отметкой времени:Эффективное выполнение операций на Erlang кортежей
66> T0=now().
{1387,611376,335905}
67> T1=now().
{1387,611383,156575}
68> T1-T0.
** exception error: an error occurred when evaluating an arithmetic expression
in operator -/2
called as {1387,611383,156575} - {1387,611376,335905}
69> {A1,A2,A3}=T0.
{1387,611376,335905}
70> {B1,B2,B3}=T1.
{1387,611383,156575}
71> Diff=(B1-A1)*1000000000000+(B2-A2)*1000000+(B3-A3).
6820670
72>
есть более эффективный (элегантный) способ сделать это, чем вычитая каждый соответствующий элемент?
Спасибо.
Это позор, тем более, что было бы полезно во многих случаях. –
@CharlesO: Я не понимаю, он производит довольно эффективный итоговый байт-код. –
Очень эффективный байтовый код да ... но не такой красивый, как просто запись T2-T1, особенно когда T1 и T2 имеют одинаковую структуру, и оператор (+ или -) может применяться к каждому соответствующему элементу. –