Playbook per il controllo della connessione

Questo documento mostra i modi per utilizzare i controlli di connessione.

Esempi di valori

Quando definisci i controlli di connessione per input e output, in genere devi considerare i controlli come rappresentanti di tipi.

I controlli degli input devono includere tutti i "tipi" accettati e i controlli delle uscite devono includere esattamente ciò che "restituisce".

Accettare un solo tipo

Nel caso più semplice, in cui vuoi creare un blocco che "accetta" o "restituisce" un tipo, devi includere questo tipo nel controllo della connessione.

un blocco di valori che accetta un singolo tipo

Accettare più tipi

Per creare un blocco che "accetti" più tipi, devi includere ogni tipo accettato nel controllo di connessione dell'input.

un blocco di valori che accetta più tipi

Per convenzione, se un'uscita può essere accettata a volte in più situazioni (ad es. se consenti a volte di utilizzare i numeri come stringhe), l'uscita deve essere più restrittiva e gli input devono essere più permissivi. Questa convenzione garantisce che le uscite non si connettano dove non sono supportate.

Accetta qualsiasi tipo

Per creare un blocco che "accetti" qualsiasi tipo, devi impostare il controllo di connessione dell'input su null.

un blocco di valori che accetta qualsiasi tipo

Sottotipi di reso

Per creare un blocco che "restituisce" un sottotipo, devi includere sia il tipo sia il supertipo nel controllo di connessione dell'output.

un blocco di valori che restituisce il proprio tipo e il proprio supertipo

Nel caso dei sottotipi, è consentito avere più controlli in un controllo dell'output, perché il blocco sempre "restituisce" entrambi i tipi.

Restituire tipi con parametri

Per creare un blocco che "restituisce" un tipo con parametri, devi includere sia la versione con parametri sia la versione senza parametri nel controllo di connessione dell'output.

A seconda del livello di severità che vuoi applicare al linguaggio del blocco, ti consigliamo di includere anche le deviazioni del tipo.

un blocco di valori che restituisce il tipo con parametri e il tipo senza parametri

Come per i sottotipi, in questo caso è consentito avere più controlli in un controllo di output, perché il blocco sempre "restituisce" entrambi i tipi.

Esempi di stack o istruzioni

Esistono alcuni modi comuni in cui gli sviluppatori definiscono i controlli per le connessioni precedenti e successive. Di solito si pensa che queste limitino l'ordinamento dei blocchi.

Le connessioni successive devono includere i blocchi che devono seguire quello corrente e quelle precedenti devono includere il "blocco corrente".

Mantenere i blocchi in ordine

Per creare un insieme di blocchi che si connettono in un ordine definito, devi includere i blocchi che devono seguire quello corrente nel controllo di connessione successivo e il blocco corrente nel controllo di connessione precedente.

blocchi di istruzioni con un ordine forzato

Consenti molti blocchi intermedi

Per creare un insieme di blocchi ordinati che consentano molti blocchi intermedi, devi includere almeno una voce dal controllo di connessione precedente del blocco intermedio nel controllo di connessione successivo del blocco intermedio. In questo modo, il blocco può essere seguito da più blocchi uguali.

blocchi di istruzioni che consentono molti blocchi intermedi

Non consentire blocchi intermedi

Per creare un insieme di blocchi ordinati in cui i blocchi centrali sono facoltativi, devi includere almeno una voce sia dal controllo di connessione precedente del blocco centrale sia dal controllo di connessione precedente dell'ultimo blocco nel controllo di connessione successivo del primo blocco. In questo modo, il primo blocco può essere seguito da un blocco intermedio o da un blocco finale.

blocchi di istruzioni che non consentono blocchi intermedi

Serie di tipo o-e

Per creare un blocco che può essere seguito solo da blocchi di un gruppo o da blocchi di un altro (e non da entrambi), devi fare due cose:

  1. Devi includere almeno una voce da entrambi i controlli di connessione precedenti del gruppo nel controllo di connessione successivo del primo blocco.

  2. Devi definire i controlli di connessione successivi dei gruppi in modo che includano solo i valori presenti nei controlli di connessione precedenti (in modo che possano essere seguiti solo da blocchi dello stesso gruppo).

blocchi di istruzioni che possono essere seguiti da più di un tipo di blocco o da più di un altro, ma non da entrambi