Co robi operator strzałki ( "- > " ) w Kotlinie?
Prawdopodobnie trochę szersze pytanie, ale oficjalna dokumentacja nie wspomina nawet o operatorze strzałki (lub konstrukcji językowej, Nie wiem, która fraza jest dokładniejsza) jako niezależnej jednostce.
Najbardziej oczywistym zastosowaniem jest instrukcja warunkowa when, gdzie służy do przypisania wyrażenia do określonego 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 do czego służą? Czy istnieje ogólne znaczenie operatora strzałki w Kotlinie?
3 answers
->
jest częścią składni Kotlina (podobnie jak składnia wyrażeń lambda Javy ) i może być używana w 3 kontekstach:
-
when
wyrażenia, w których oddziela część "matching / condition "od bloku" result / execution"val greet = when(args[0]) { "Apple", "Orange" -> "fruit" is Number -> "How many?" else -> "hi!" }
-
Wyrażenia Lambda, gdzie oddziela parametry od ciała funkcji
val lambda = { a:String -> "hi!" } items.filter { element -> element == "search" }
-
Typy funkcji, gdzie oddziela typy parametrów od typu wynikowego, np.
comparator
fun <T> sort(comparator:(T,T) -> Int){ }
Szczegóły o gramatyce Kotlina są w dokumentacji w szczególności:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-07 14:17:22
->
jest separatorem . Jest to specjalny symbol używany do oddzielania kodu o różnych celach. Może być używany do:
-
Oddziel parametry i ciało wyrażenia lambda
val sum = { x: Int, y: Int -> x + y }
-
Oddzielenie parametrów i deklaracji typu zwracanego w typu funkcji
(R, T) -> R
-
Oddziel warunek i ciało gdy wyrażenie oddział
when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("otherwise") }
Tutaj jest w dokumentacja .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-05 12:13:23
From the Kotlin docs :
->
Oddziela parametry i deklarację typu return w funkcji typ
Oddziela warunek i ciało gdy wyrażenie Oddział
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-18 18:03:49