Какой смысл первого индекса в Юлии?

36

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

Алексей Петрушин
источник

Ответы:

47

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

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

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

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

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

Дэвид Варела
источник
«В этом случае вы можете использовать абстракции, такие как firstindex, lastindexи eachindex. Вы могли бы сказать, что Юлия устанавливает стандарты для вас ...
Vector Sigma
1
Можете ли вы добавить ссылки на документацию для firstindex (), lastindex () и eachindex ()?
Питер Мортенсен
14

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

crstnbr
источник