箭头(“ - >”)运算符在Kotlin中做了什么?

时间:2017-03-07 10:38:22

标签: operators kotlin

可能有点广泛的问题,但官方文档甚至没有提到箭头操作符(或语言结构,我不知道哪个短语更准确)作为一个独立的实体。

最明显的用法是when条件语句,用于将表达式分配给特定条件:

  val greet = when(args[0]) {
    "Appul" -> "howdy!"
    "Orang" -> "wazzup?"
    "Banan" -> "bonjur!"
    else    -> "hi!"
  }

  println(args[0] +" greets you: \""+ greet +"\"")

其他用途是什么,它们有什么作用? Kotlin中箭头操作符有一般含义吗?

3 个答案:

答案 0 :(得分:31)

->是Kotlin语法的一部分(类似于Java lambda expressions syntax),可以在3种语境中使用:

  • when表达式,用于分隔"匹配/条件"部分来自"结果/执行"块

     val greet = when(args[0]) {
       "Apple", "Orange" -> "fruit"
       is Number -> "How many?"
       else    -> "hi!"
     }
    
  • lambda表达式,它将参数与函数体分开

      val lambda = { a:String -> "hi!" }
      items.filter { element -> element == "search"  }
    
  • 函数类型,它将参数类型与结果类型分开,例如comparator

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

关于Kotlin语法的详细信息特别是in the documentation

答案 1 :(得分:1)

->分隔符。它是特殊符号,用于分隔具有不同用途的代码。它可以用于:

  • 分隔lambda expression的参数和正文

    val sum = { x: Int, y: Int -> x + y }
    
  • function type

    中分隔参数并返回类型声明
    (R, T) -> R
    
  • 分隔when expression分支的条件和主体

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

它在documentation中。

答案 2 :(得分:0)

来自Kotlin docs

  

->