Hacker News new | ask | show | jobs
by Scene_Cast2 3658 days ago
I had something like this:

    var heights: Array< Pair<Int, Int> > = ... //populating the array
    heights.sortBy { it.second };
It was not obvious at all that I had to use curly braces. The documentation says:

    inline fun <T, R : Comparable<R>> MutableList<T>.sortBy(
    crossinline selector: (T) -> R?) (source)
This is after I figured out that I'm not supposed to use sortWith (I never figured out how to use this one)
2 comments

The curly braces are the syntax for lambdas, one of the basic types `(T) -> R?`. There are plenty of examples for using that, but in the respective chapters: https://kotlinlang.org/docs/reference/lambdas.html#higher-or... or in this bunch of examples: https://kotlinlang.org/docs/reference/idioms.html#filtering-...

The docs are arranged in a way that one reads them in the order they are written (at least the first half). I supposed that would take more than half an hour given at the competition.

I don't think Kotlin is the best choice for programming challenges like codeforces - they really don't let him shine (although I use it whenever I can). But if this is a valid case, we can collaborate and write a short tutorial for C/C++ to Kotlin programmers.

Oops, copied the wrong snippet out of the two:

    inline fun <T, R : Comparable<R>> Array<out T>.sortBy(
    crossinline selector: (T) -> R?) (source)