Впервые в Scala, я хочу попробовать переписать некоторый код в flatMap, вызвав функцию вместо записи всего процесса внутри "()".
Исходный код выглядит так:
val longForm = summary.flatMap(row => {
/*This is the code I want to replace with a function*/
val metric = row.getString(0)
(1 until row.size).map{i=>
(metric,schema(i).name,row.getString(i).toDouble)
})
}/*End of function*/)
Функция, которую я написал:
def tfunc(line:Row):List[Any] ={
val metric = line.getString(0)
var res = List[Any]
for (i<- 1 to line.size){
/*Save each iteration result as a List[tuple], then append to the res List.*/
val tup = (metric,schema(i).name,line.getString(i).toDouble)
val tempList = List(tup)
res = res :: tempList
}
res
}
Функция не прошла компиляцию со следующей ошибкой:
ошибка: отсутствует список аргументов для метода, применяемого в объекте ListНеприменимые методы преобразуются в функции только тогда, когда ожидается тип функции.Вы можете сделать это преобразование явным, написав apply _
или apply(_)
вместо apply
.var res = List [Any]
Что не так с этой функцией?А для flatMap это способ записи, чтобы вернуть результат в виде списка?