Hello,
What does the next line exactly mean:
predictions.map { square(it - d) }.average()
Code:
fun square(d: Double) = d * d
fun averageSquareDiff(d: Double, predictions: DoubleArray) =
predictions.map { square(it - d) }.average()
fun diversityTheorem(truth: Double, predictions: DoubleArray): String {
val average = predictions.average()
val f = “%6.3f”
return “average-error : ${f.format(averageSquareDiff(truth, predictions))}\n” +
“crowd-error : ${f.format(square(truth - average))}\n” +
“diversity : ${f.format(averageSquareDiff(average, predictions))}\n”
}
fun main(args: Array) {
println(diversityTheorem(49.0, doubleArrayOf(48.0, 47.0, 51.0)))
println(diversityTheorem(49.0, doubleArrayOf(48.0, 47.0, 51.0, 42.0)))
}
Greetings,
Gal Zsolt
(~ CalmoSoft ~)
Hello Johan,
Thanks for the help but I still do not know what it does mean.
How can I translate it to C language?
Please answer in details.
Greetings,
Gal Zsolt
(~ CalmoSoft ~)
There is a specific section about it
in the article I linked to. You have to understand lambdas to understand what it says, but lambdas are the subject of the article. I don’t know what I can add that would improve the information in the article.
The more specific link: https://kotlinlang.org/docs/reference/lambdas.html#it-implicit-name-of-a-single-parameter
It’s very common that a lambda expression has only one parameter.
If the compiler can figure the signature out itself, it is allowed not to declare the only parameter and omit ->
. The parameter will be implicitly declared under the name it
:
ints.filter { it > 0 } // this literal is of type '(it: Int) -> Boolean'
Hello Johan, Ilya,
Thanks for the help.
Now I understand what it does mean.
Greetings,
Gal Zsolt
(~ CalmoSoft ~)