Я новый Scala программист, и я столкнулся с проблемой. Я пишу функцию для получения числа. Когда я пытаюсь получить значение из моего для l oop (около дна, инкапсулированного в операторе If / Else), это дает мне ошибку несоответствия типов. Я ожидаю кортеж TreeSet с String и Int (scala .collection.mutable.TreeSet [(String, Int)]), но он говорит, что возвращает Unit.
Вот мои инструкции для это, и я считаю, что если я исправлю эту ошибку, она должна работать.
"Примечание: тип возвращаемого значения - это TreeSet кортежей, имеющих тип (String, Int). Например, с учетом списка людей Список («Том», «Энн», «Роб», «Роб», «Энн», «Том», «Пэт», «Роб», «Пат», «Том») ваша функция должна возвращать TreeSet ((Том, 3 ), (rob, 3)). Примечание: для самого большого мошенника в ie необходимо вернуть все самые большие мошенники в наборе. Список, имена которого появляются только один раз, возвращает пустой TreeSet. "
*** Функции «обманщики» и «а» определены в других местах, которые не показаны.
def biggestCrooks(people: List[String]): TreeSet[(String,Int)] = {
val crooksListed = crooks(people).toList //Runs my one function that gives me the
// list of criminals with more than one offense
var numCounted = new Array[Int](crooksListed.size) // Array to hold the number of times a person name
//appears
for(nameIndex <- 0 until crooksListed.size){ // Counts the number of times a name appears
val counter = people.count(_.equals(crooksListed(nameIndex))) //Stores that name in the array
numCounted(nameIndex) = counter //Stores the num in the index associated with the name
}
var largestValue = numCounted.max // Largest value in the array
val numValues = numCounted.count(_ == largestValue) // Number of times the value appears
var indeces : Set[Int] = Set()
var completeList : TreeSet[(String, Int)] = TreeSet() // Completed list of all names / values
if(numValues > 1){// Used JIC there are multiple instances of numValues
for(i <- 0 until numCounted.length){ //If there are multiple instances, find the indeces of them
if(numCounted(i) == largestValue)
indeces(i) //add the index to the array
}
val wow = indeces.toList //Converts a mutable Set to an immutable list
for(i <- 0 until wow.size){ //iterate through the indeces and associate with names
completeList.map(crooksListed(wow(i)), wow(i)) //Maps the values to the completeList TreeSet
//Supposed to solve problem with mismatched types
}
}
else{
completeList.map(i => (crooksListed(numCounted.indexOf(largestValue)), largestValue)) //Maps the values to the TreeSet
}
}// end biggestCrook
println(biggestCrooks(a))