Периодически Scala сильно удивляет как в хорошем смысле этого слова, так и в плохом. С циклом
int index;
for(index = 0; index < ....) {...}
std::cout << index; // и тут мы получили количество итераций
for(index = 0; index < ....) {...}
std::cout << index; // и тут мы получили количество итераций
Да, обломс… Единственный найденный мной рабочий вариант выглядит следующим образом, что на мой взгляд очень и очень печально:
val strings = List("one", "two", "three", "four")
var index = 0
while (index < strings.length) {
index += 1
}
var index = 0
while (index < strings.length) {
index += 1
}
Но, зато наткнулся на куда более приятную возможность: получение индекса в процессе обработки коллекции без дополнительных приседаний:
val strings = List("one", "two", "three", "four")
for ((string, index) <- strings.zipWithIndex) {
println("Index: " + index + ", string: " + string)
}
for ((string, index) <- strings.zipWithIndex) {
println("Index: " + index + ", string: " + string)
}
В Nemerle можно так
foreach (s in strings with index) …
При чем это не создает лишних объектов как в случае zipWithIndex.
Nemerle это труп. К сожалению.
Ну почему сразу так пессимистично
Я никак не могу синтаксис Скалы принять , ну не удобен он
Свои соображения на тему того, почему Nemerle – труп я как-то писал. Кому в современном мире нужно Windows-only решение? К примеру я его даже пощумать не могу :???:
С Mono все работает
Кроме того онлайн компиляторы есть http://liveworkspace.org/ (новый)
http://ideone.com (тут старый)
Надеемся на комманду из jetBrains, может через пару лет будет Nemerle на все платформы
Слишком много приседаний и как следствие бесполезно в коммерческой разработке. Еще вопрос “в чем писать” встанет. Так что я бы закапывал его или переписывал на JVM или LLVM.