Скала для петли. Получение индекса в удобном порядке

В этом коде я хочу увеличитьindex поставить его каждомуyieldрезультат.

var index=0

for(str 

Ответы на вопрос(4)

Решение Вопроса

zipWithIndex Метод в большинстве коллекций, подобных последовательности, даст вам индекс, начинающийся с нуля, увеличиваясь с каждым элементом:

for ((str, index) 
 ses02 июн. 2013 г., 17:05
Тот'хорошо. Я'Мы уже видели этот вид трансформации. Но это все еще в пассивном знании. Тот'суть действительно.
 Yan King Yin21 мар. 2015 г., 11:23
Wouldn»разве это неэффективно?

zipWithIndex скопирует и создаст новую коллекцию, поэтому лучше сделать ее ленивой, если коллекция потенциально велика

for ((str, index) 
 Max05 июн. 2013 г., 05:47
обновленный ответ. Последовательность должна быть проиндексирована, чтобы обеспечить хорошую производительность произвольного доступа.
 ses03 июн. 2013 г., 20:13
все это время будет идти через весь список, чтобы получить элемент по индексу: strs (i). может быть медленным
splitToStrings(text).foldLeft(0,List[Word]){(a,b) => {
   if(a._1!=0) (a._1+1,new Word(str, UNKNOWN_FORM, index) :: b)
   else (a._1,new Word(str, UNKNOWN_FORM, index) :: b)
}}

я используюfoldLeft здесь с кортежем как: начальная база сindex = 0 и пустойList, Затем я перебираю каждый элемент.

Вышеa это кортеж Я проверяюindex значение и увеличить его. Иначе я не добавляюindex, И я добавляю новыйWord к списку.

В конечном итоге вы получите кортеж, содержащий значение индекса и общий список, содержащий все слова.

 likeitlikeit02 июн. 2013 г., 17:23
Код, подобный этому, может легко использовать некоторые объяснительные слова, чтобы идти с ним.

Поскольку изначально индекс установлен в 0, таким образом, ваше состояниеindex != 0 никогда не выполняется в true, и индекс никогда не увеличивается.Может быть, вы нене нужно это условие? Может быть, вы можете посчитать результаты потом? Теперь я вижу, что индекс используется в цикле. Тогда вы должны использовать@BenJames ответ или рекурсивный.

 ses02 июн. 2013 г., 16:54
Ага. это было глупо с моей стороны. по крайней мере, яЯ рад, что нет ничего удивительного в урожайности. (Я просто сказал, потому что хочу начать с 0-индекса). Я думаю, что из-за скалы что-то идет не так, как надо :) но это другой случай%) Есть много сюрпризов, которые яу меня недавно .. этопочему

Ваш ответ на вопрос