Какой смысл первого индекса в Юлии? - PullRequest
36 голосов
/ 27 февраля 2020

Из документации написано, что firstindex () находит первый индекс коллекции. Почему бы просто не использовать 1? Что может быть в случае, когда это не 1?

Ответы [ 2 ]

47 голосов
/ 27 февраля 2020

Первый индекс не обязательно равен 1, потому что Юлия поддерживает пользовательское индексирование . Чтобы понять, почему это полезно, вы не можете превзойти сообщение в блоге Тима Холиана .

Пользовательские индексы позволяют кодировать информацию о ваших данных в самом шаблоне индексации : иногда более естественно начинать считать с одного, иногда с нуля, иногда с какого-то более произвольного числа.

В других случаях, например, когда вы пишете универсальные c алгоритмы, вас не волнует указатель c индекс. В этом случае вы можете использовать такие абстракции, как firstindex, lastindex и eachindex.

Чаще всего это Лучше избегать ссылки на индекс в целом и просто перебирать элементы коллекции (например, for x in xs).

Джулия позволяет вам использовать наиболее эффективную стратегию для ваших данных.

14 голосов
/ 27 февраля 2020

Существуют специальные типы массивов, такие как, например, OffsetArrays.jl , которые могут иметь произвольные индексы.

...