Я имею дело с простой программой Scala, в которой я определил две вспомогательные функции:
def getInt(number: String): Int ={
if(number=="NULL") 0
else number.toInt
}
def getFloat(number: String): Float ={
if(number=="NULL") 0
else number.toFloat
}
И третья рекурсивная функция, которая их вызывает:
def foldr_rating_state(l: List[(String, String, String)], sum_sat:Int, n_sat:Int, sum_ret:Float, n_ret:Int) :Float = {
match l{
case Nil => ((sum_sat/n_sat)/1600)*(1-(sum_ret/n_ret)).toFloat
case x::xs => {
foldr_rating_state(xs.asInstanceOf[List[(String, String, String)]],
sum_sat+getInt(x(1)),
n_sat+(if (getInt(x(1))==0) 0 else getInt(x(1))),
sum_ret+getFloat(x(2)),
n_ret+(if (getFloat(x(2))==0.toFloat) 0 else getFloat(x(2))).toInt
)
0.toFloat
}
case _ => 0.toFloat
}
}
Но компилятор говорит мне, что:
И IntelliJ говорит
Выражение типа (String, String, String) не соответствует ожидаемому типу Float
Если я удалю «.asInstanceOf [List [(String, String, String)]]», я получу
Несоответствие типов, Ожидаемый список [(String, String, String)], Факт: Список [Любой]
Есть ли у вас какие-либо представления о причине этих проблем?
Заранее спасибо!