Wat doet de pijl (“->”) operator in Kotlin?

Waarschijnlijk een beetje algemene vraag, maar de officiële documentatie vermeldt niet eens de pijl-operator (of taalconstructie, ik weet niet welke zin nauwkeuriger is) als een onafhankelijke entiteit.

Het meest voor de hand liggende gebruik is de voorwaardelijke instructie when, waar deze wordt gebruikt om een ​​uitdrukking aan een specifieke voorwaarde toe te kennen:

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

Wat zijn de andere toepassingen en wat zijn ze?
Is er een algemene betekenis van de pijl-operator in Kotlin?


Antwoord 1, autoriteit 100%

De ->maakt deel uit van de syntaxis van Kotlin (vergelijkbaar met Java’s syntaxis van lambda-expressies) en kan in 3 contexten worden gebruikt:

  • whenuitdrukkingen waarbij het “overeenkomst/voorwaarde” deel van het blok “resultaat/uitvoering” scheidt

    val greet = when(args[0]) {
       "Apple", "Orange" -> "fruit"
       is Number -> "How many?"
       else    -> "hi!"
     }
    
  • lambda-expressies waarbij parameters worden gescheiden van de hoofdtekst van de functie

     val lambda = { a:String -> "hi!" }
      items.filter { element -> element == "search"  }
    
  • functietypes waar het parametertypes van resultaattype scheidt, b.v. comparator

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

Details over de Kotlin-grammatica staan ​​in de documentatiein het bijzonder:


Antwoord 2, autoriteit 23%

De ->is een scheidingsteken. Het is een speciaal symbool dat wordt gebruikt om code met verschillende doeleinden te scheiden. Het kan worden gebruikt om:

  • Scheid de parameters en de hoofdtekst van een lambda-expressie

    val sum = { x: Int, y: Int -> x + y }
    
  • Scheid de parameters en de declaratie van het retourtype in een functietype

    (R, T) -> R
    
  • Scheid de voorwaarde en hoofdtekst van een wanneer-uitdrukkingfiliaal

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

Hier staat het in de documentatie.


Antwoord 3, autoriteit 3%

Van de Kotlin-documenten:

->

Other episodes