Почему следующий код не работает, и как его преодолеть с помощью Iterator
?Карта привязывается к кортежам с помощью Iterator
def f(str : String) : (String, String) = {
str.splitAt(1)
}
var with_id : Iterator[(String, Int)] = List(("test", 1), ("list", 2), ("nothing", 3), ("else", 4)).iterator
println(with_id.mkString(" "))
val result = with_id map { (s : String, i : Int) => (f(s), i) }
println(result.mkString(" "))
Ожидаемый результат:
(("t", "est"), 1) (("l", "ist"), 2) ...
Ошибка:
Error:(28, 54) type mismatch;
found : (String, Int) => ((String, String), Int)
required: ((String, Int)) => ?
val result = with_id map { (s : String, i : Int) => (f(s), i) }
^
Спасибо! Но есть еще одна проблема с моим примером. Первый 'mkString' исчерпывает итератор, заставляя карту запускаться на пустой итератор. – Dyin