2015-12-13 10 views
11

Wie LINQ in C#, zum Verständnis in Scala, etwas Ähnliches in Kotlin? Wenn nicht unterstützt, ist es geplant?Unterstützt Kotlin das monadische Verständnis?


EDIT: Die Antwort ist, dass Verständnis Unterstützung auf dem Tisch liegt.

+5

Ich denke, hat es einige Missverständnisse hier. Es gibt keine Richtlinie, Monaden nirgends zu verwenden. Einige monadähnliche Konstrukte, z. B. sichere Aufrufe für Nullable-Typen, sind in die Sprache integriert. Momentan unterstützen wir keine Comprehensions, aber diese Funktion liegt auf dem Tisch. –

+0

Wie @AndreyBreslav bemerkte, verwendet Kotlin monadische Konstruktionen, wo es Sinn macht. Was ich in meiner Antwort sagte, ist, dass es kein Ziel gibt, Monaden in ** jedem ** einzigen Sprachkonzept zu verwenden. – voddan

Antwort

5

In der Preview-Version von Kotlin 1.1 gibt es universelle async/await Syntax, die für verschiedene Arten von monadischen Comprehensions verwendet werden können:

Viele Sprachen (beginnend mit C# 2012) unterstützen asynchrone Programmierung durch spezielle Sprache Konstrukte wie async/erwarten Schlüsselwörter. In Kotlin verallgemeinerten wir dieses Konzept, so dass Bibliotheken ihre eigenen Versionen solcher Konstrukte definieren können und async kein Schlüsselwort ist, sondern einfach eine Funktion.

Dieses Design ermöglicht die Integration verschiedener asynchronen APIs: Futures/Versprechen, Rückruf-passing, etc. Es ist auch allgemein genug, um auszudrücken faul Generatoren (Ausbeute) und einige andere Anwendungsfälle abdecken.

source

+0

thx. Async nicht kennen/warten ist analog zu return/bind. Spannend auch die neuen Features in 1.1 –

Verwandte Themen