What does the arrow (“->”) operator do in Kotlin?

前端 未结 3 1636
耶瑟儿~
耶瑟儿~ 2020-12-05 04:09

Probably a little bit broad question, but the official documentation doesn\'t even mentioning the arrow operator (or language construct, I don\'t know which phrase is more a

相关标签:
3条回答
  • 2020-12-05 04:30

    The -> is a separator. It is special symbol used to separate code with different purposes. It can be used to:

    • Separate the parameters and body of a lambda expression

      val sum = { x: Int, y: Int -> x + y }
      
    • Separate the parameters and return type declaration in a function type

      (R, T) -> R
      
    • Separate the condition and body of a when expression branch

      when (x) {
          0, 1 -> print("x == 0 or x == 1")
          else -> print("otherwise")
      }  
      

    Here it is in the documentation.

    0 讨论(0)
  • 2020-12-05 04:35

    From the Kotlin docs:

    ->

    • separates the parameters and body of a lambda expression

    • separates the parameters and return type declaration in a function type

    • separates the condition and body of a when expression branch

    0 讨论(0)
  • 2020-12-05 04:40

    The -> is part of Kotlin's syntax (similar to Java's lambda expressions syntax) and can be used in 3 contexts:

    • when expressions where it separates "matching/condition" part from "result/execution" block

       val greet = when(args[0]) {
         "Apple", "Orange" -> "fruit"
         is Number -> "How many?"
         else    -> "hi!"
       }
      
    • lambda expressions where it separates parameters from function body

        val lambda = { a:String -> "hi!" }
        items.filter { element -> element == "search"  }
      
    • function types where it separates parameters types from result type e.g. comparator

        fun <T> sort(comparator:(T,T) -> Int){
        }
      

    Details about Kotlin grammar are in the documentation in particular:

    • functionType
    • functionLiteral
    • whenEntry
    0 讨论(0)
提交回复
热议问题