2017-03-07 63 views
14

Prawdopodobnie trochę szerokie pytanie, ale oficjalna dokumentacja nawet nie wspomina operatora strzałki (lub konstrukcji językowej, nie wiem, która fraza jest dokładniejsza) jako niezależnego podmiotu.Co robi operator strzałki ("->") w Kotlin?

Najbardziej oczywistym zastosowaniem jest gdy instrukcja warunkowa, gdzie jest on stosowany, aby przypisać do konkretnego wyrażenia warunku:

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

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

Jakie są inne zastosowania, i co robią? Czy ogólne znaczenie operatora strzałki w Kotlin jest ogólne?

Odpowiedz

16

-> jest częścią składni Kotlin jest (podobnie jak Java lambda expressions syntax) i może być stosowany w 3 kontekstach:

  • when wyrażenia gdzie oddziela „pasujący/stan” część z „Wynik/wykonanie” bloku

    val greet = when(args[0]) { 
        "Apple", "Orange" -> "fruit" 
        is Number -> "How many?" 
        else -> "hi!" 
    } 
    
  • lambda wyrażenia gdzie oddziela parametrów z ciała funkcji

    val lambda = { a:String -> "hi!" } 
        items.filter { element -> element == "search" } 
    
  • typy funkcji, w których oddziela typy parametrów od typu wyniku, np. comparator

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

Szczegóły dotyczące gramatyki Kotlin są in the documentation w szczególności:

+4

Prawdopodobnie na przykład w przykładzie [typy funkcji] (https://kotlinlang.org/docs/reference/lambdas.html#function-types), a link do odnośnika może poprawić tę odpowiedź. – hotkey

+2

A teraz są 3 konteksty i nie tylko 2. – mfulton26

+0

Dzięki za pomoc i szczegółową odpowiedź, chłopaki. Przekopię się na dwóch pozostałych. –