julienviet
12/16/2016, 9:35 AMjulienviet
12/16/2016, 9:35 AMjulienviet
12/16/2016, 9:35 AMjulienviet
12/16/2016, 9:36 AMjulienviet
12/16/2016, 9:36 AMjulienviet
12/16/2016, 9:36 AMjulienviet
12/16/2016, 9:36 AMjulienviet
12/16/2016, 9:36 AMelizarov
12/16/2016, 9:38 AMelizarov
12/16/2016, 9:40 AMgildor
12/16/2016, 9:43 AMelizarov
12/16/2016, 9:46 AMelizarov
12/16/2016, 9:46 AMTristan Caron
12/16/2016, 9:48 AMelizarov
12/16/2016, 9:50 AMTristan Caron
12/16/2016, 10:03 AM// Asynchronous function
Future<String> greeting(String name) async => return “Hello $name”;
final result = await greeting(”Someone”);
greeting().then(print);
// --
// Asynchronous generator
Stream<String> greetingSevenDwarfs() async* {
const dwarfs = [’one’, ‘two’, '…’];
for (final dwarf in dwarfs) {
yield(dwarf)
}
}
await for (final result in greetingSevenDwarfs()) {
print(result);
}
greetingSevenDwarfs().listen(print);
// --
// Synchronous generator
Iterator<String> greetingSevenDwarfsSync() sync* {
const dwarfs = [’one’, ‘two’, '…’];
for (final dwarf in dwarfs) {
yield(dwarf)
}
}
for (final result in greetingSevenDwarfs()) {
print(result);
}
greetingSevenDwarfs().forEach(print);
I was wondering if Kotlin has an equivalent to the code above.elizarov
12/16/2016, 10:09 AMelizarov
12/16/2016, 10:09 AMgenerate
and async
elizarov
12/16/2016, 10:11 AMasync
is what is called async*
in the code above. In Kotlin you’d write
fun greeting(name: String): Future<String> = async { … }
elizarov
12/16/2016, 10:12 AMgenerate
is what is called sync*
in the above code. In Kotlin you’d write
fun greetingSevenDwarfsSync(): Sequence<String> = generate { … }
elizarov
12/16/2016, 10:15 AMAsync
suffix to greeting
, that is name it fun greetingAsync(…): Future<String>
, but drop Sync
suffix from the other one, that is name it just fun greetingSevenDwarfs(): Sequence<String>
. Async (future-returning) style of programming is quite error-prone, so it is better to make it explicit.Tristan Caron
12/16/2016, 10:20 AMFuture
was the equivalent of Promise
in JavaScript of Task
in C#elizarov
12/16/2016, 10:22 AMFuture
, Promise
and Task
are all equivalent.elizarov
12/16/2016, 10:22 AMawait
in Kotlin is not a keyword either. It is just a library function defined like suspend <T> fun await(f: Future<T>): T
elizarov
12/16/2016, 10:23 AMawait
implementation for any and all of themelizarov
12/16/2016, 10:23 AMelizarov
12/16/2016, 10:25 AMPromise
and, of course, in Kotlin JS you’d write await
for JS Promisekonsoletyper
12/16/2016, 10:25 AMPromise
indeed. But for some reason there's IndexedDB API, that is not based on promisesjulienviet
12/16/2016, 10:27 AMjulienviet
12/16/2016, 10:27 AM