Массив - это не типичная коллекция Scala ... Это просто массив Java, который выглядит как коллекция посредством неявных преобразований.
Учитывая запутанную дисперсию массивов Java, вы действительно не хотите использовать их без веской причины, поскольку они являются источником скрывающихся ошибок.
(см. Здесь: http://www.infoq.com/presentations/Java-Puzzlers)
Создание такого набора на основе 1 также не очень хорошая идея, поскольку у вас нет возможности узнать, сколько других методов сбора основано на предположении, что последовательности основаны на 0 Поэтому, чтобы сделать это безопасно (если вы действительно должны), вам нужно добавить новый метод, который оставит метод по умолчанию без изменений:
class OneBasedLookup[T](seq:Seq) {
def atIdx(i:Int) = seq(i-1)
}
implicit def seqHasOneBasedLookup(seq:Seq) = new OneBasedLookup(seq)
// now use `atIdx` on any sequence.
Еще безопаснее, вы можете создать Map[Int,T]
с индексами, основанными на одном
(Iterator.from(1) zip seq).toMap
Это, пожалуй, самое «правильное» решение, хотя оно также будет иметь самую высокую стоимость производительности.