Функция Erlang lists:index_of?

Да, это - значение по умолчанию. На самом деле это - основание классического "DSU" (Decorate-Sort-Undecorate) идиома в Python. См. Код Как Pythonista.

18
задан Svante 22 September 2009 в 10:09
поделиться

2 ответа

Вам придется определить его самостоятельно, например:

index_of(Item, List) -> index_of(Item, List, 1).

index_of(_, [], _)  -> not_found;
index_of(Item, [Item|_], Index) -> Index;
index_of(Item, [_|Tl], Index) -> index_of(Item, Tl, Index+1).

Обратите внимание, однако, что доступ к N-му элементу списка составляет O (N), поэтому алгоритм, который часто обращается к списку с помощью индекс будет менее эффективным, чем тот, который проходит через него последовательно.

21
ответ дан 30 November 2019 в 07:13
поделиться

Эта функция очень необычна для Erlang, и это может быть причиной того, что ее нет в стандартной библиотеке. Она никому из опытных программистов на Erlang не нужна, и он не рекомендует использовать алгоритмы, использующие эту функцию. Когда кому-то это нужно, может писать для собственных целей, но такие очень редкие случаи не являются причиной для включения его в stdlib . Создавайте структуры данных надлежащим образом, а не запрашивайте эту функцию. В большинстве случаев необходимость в этой функции указывает на ошибку в конструкции.

1
ответ дан 30 November 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: