Lingara Lingara Dokumentasie Gidse API Biblioteke Apps Bou Webtoepassing
Taal: Afrikaans

Strome

Hierdie bladsy is uit Engels vertaal. As die twee verskil, is die Engelse bladsy korrek. Lees die Engelse bladsy

Vier bewerkings stroom hul resultate as bediener-gestuurde gebeurtenisse: woordeskat genereer, ‘n boodskap aan die tutor stuur, ‘n lesplan skep en een volg. Elke biblioteek omskep die gebeurtenisstroom in die taal se eie soort iterator, en gee jou elke gebeurtenis reeds gedekodeer tot ‘n getipeerde waarde.

Hoe ‘n stroom eindig

  • Wanneer die werk klaar is. Die iterasie stop vanself by die stroom se laaste gebeurtenis. By ‘n lesplan dra daardie laaste gebeurtenis die resultaat, so jy ontvang dit voordat die lus eindig.
  • Wanneer die API ‘n fout rapporteer. ‘n Fout wat binne die stroom aankom, word as ‘n API-fout opgewerp, dieselfde tipe as een wat daarvoor aankom.
  • Wanneer die verbinding misluk. ‘n Stroom wat voor sy laaste gebeurtenis eindig, of wat vir 120 sekondes glad niks stuur nie, word as ‘n vervoerfout opgewerp.
  • Wanneer jy stop. Kanselleer die oproep op jou taal se gewone manier, of hou op lees, en die verbinding sluit dadelik.

Keepalive-kommentaar en gebeurtenistipes wat ‘n biblioteek nog nie ken nie, word oorgeslaan, sodat ‘n nuwer API nooit ‘n ouer biblioteek breek nie.

Nooit herhaal nie

‘n Stroom wat selfs een gebeurtenis gelewer het, word nooit deur die biblioteek weer probeer nie, omdat herhaling jou toelae twee keer kan spandeer. As ‘n lesplan se stroom breek nadat dit begin het, volg dieselfde plan met streamLessonPlan en die plan_id uit sy eerste gebeurtenis.

Taal van die kodevoorbeeld

TypeScript

const stream = client.generateVocabulary({ level: 2, source_lang: "en", target_lang: "zh", count: 8 });
for await (const ev of stream) {
  if (ev.event === "item") console.log(ev.data.word, ev.data.translation);
}

Rust

use lingara::models::{GenerateVocabularyEvent, VocabRequest};
use std::num::NonZeroU8;

let request = VocabRequest { level: 2, source_lang: "en".into(), target_lang: "zh".into(), count: NonZeroU8::new(8) };
let mut stream = client.generate_vocabulary(&request).await?;
while let Some(event) = stream.next().await {
    if let GenerateVocabularyEvent::Item(item) = event? {
        println!("{} {}", item.word, item.translation);
    }
}

Go

count := uint8(8)
s, err := client.GenerateVocabulary(ctx, lingara.VocabRequest{Level: 2, SourceLang: "en", TargetLang: "zh", Count: &count})
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	if item, ok := ev.(lingara.GenerateVocabularyEventItem); ok {
		fmt.Println(item.Data.Word, item.Data.Translation)
	}
}

Java

import com.getlingara.client.model.GenerateVocabularyEvent;
import com.getlingara.client.model.VocabRequest;

VocabRequest request = new VocabRequest().level(2).sourceLang("en").targetLang("zh").count(8);
try (EventStream<GenerateVocabularyEvent> stream = client.generateVocabulary(request)) {
  for (GenerateVocabularyEvent event : stream) {
    if (event instanceof GenerateVocabularyEvent.Item item) {
      System.out.println(item.data().getWord() + " " + item.data().getTranslation());
    }
  }
}

Kotlin

import com.getlingara.kotlin.LingaraClient
import com.getlingara.kotlin.model.GenerateVocabularyEvent
import com.getlingara.kotlin.model.VocabRequest

val request = VocabRequest(level = 2, sourceLang = "en", targetLang = "zh", count = 8)
// The request is sent here; collect the stream once, inside use {}.
client.generateVocabulary(request).use { stream ->
    stream.collect { event ->
        when (event) {
            is GenerateVocabularyEvent.Item -> println("${event.data.word} ${event.data.translation}")
            is GenerateVocabularyEvent.Started -> Unit
        }
    }
}

Ruby

client.generate_vocabulary(level: 2, source_lang: "en", target_lang: "zh", count: 8) do |event|
  case event
  in Lingara::GenerateVocabularyEventItem => item then puts "#{item.data.word}: #{item.data.translation}"
  else nil
  end
end

PHP

use Lingara\Model\VocabRequest;
use Lingara\Stream\GenerateVocabularyEvent;

$request = new VocabRequest(['level' => 2, 'source_lang' => 'en', 'target_lang' => 'zh', 'count' => 8]);
foreach ($client->generateVocabulary($request) as $event) {
    if ($event instanceof GenerateVocabularyEvent\Item) {
        echo $event->data->getWord(), ': ', $event->data->getTranslation(), "\n";
    }
}

Wat hierdie bladsy omvou