Jest snipt kod w kodzie Kotlin:nawrócony komparator lambda w Kotlin
val dataMap = sensoryDataUsage.groupBy { it }
.mapValues { it.value.count().toDouble()/count }
.mapKeys { println(it.key); it.key.toDouble()/max }
.toSortedMap(object : Comparator<Double> {
override fun compare(p0: Double, p1: Double): Int {
return (p1-p0).compareTo(0)
}
})
To działało w porządku. Jednak IDE wciąż sugeruje mi przekonwertować ten obiekt komparatora do lambda, i nie tylko, że:
val dataMap = sensoryDataUsage.groupBy { it }
.mapValues { it.value.count().toDouble()/count }
.mapKeys { println(it.key); it.key.toDouble()/max }
.toSortedMap {x, y -> (y-x).compareTo(0)}
Ta praca shold. Jednak nie można go skompilować:
Error:(32, 14) Kotlin: Type inference failed: fun <K, V> Map<out K, V>.toSortedMap(comparator: Comparator<in K>): SortedMap<K, V> cannot be applied to receiver: Map<Double, Double> arguments: ((Double, Double) -> Int)
Jakieś pomysły, co poszło nie tak? Z góry dziękuję.
Czy przekształcić go ręcznie lub zastosować zamiar dostarczonego przez IDE? – Ilya