Uno dei principali vantaggi dell'uso di Blockly è che garantisce che il codice generato sia sintatticamente corretto.
Lo strumento Controllo connessione è l'oggetto che applica le regole di Blockly relative alle connessioni compatibili. Per impostazione predefinita, il controllo applica un sistema di tipi semplici, come descritto nella pagina Controlli del tipo.
I controlli
Blockly applica tre livelli di controlli: sicurezza, tipo e trascinamento.
Controlli di sicurezza
I controlli di sicurezza assicurano che i blocchi si trovino nello stesso spazio di lavoro, che le connessioni si trovino su blocchi diversi e così via. Ciò garantisce che Blockly non vada in cattivo stato.
I controlli di sicurezza bloccano anche le combinazioni senza senso, come il collegamento di due connessioni successive.
Controlli del tipo
Gli sviluppatori possono etichettare le connessioni con informazioni sul tipo. I controlli dei tipi utilizzano queste informazioni per applicare un sistema di tipi, ad esempio bloccando la connessione di una stringa in cui è previsto un numero.
Controlli di trascinamento
I controlli di trascinamento vengono applicati solo durante la connessione dei blocchi tramite trascinamento, anziché in modo programmatico. Ad esempio, durante il trascinamento devono essere prese in considerazione solo le connessioni entro un determinato raggio.
Override di Verifica connessione
Gli sviluppatori che vogliono fornire la propria logica per i controlli del tipo o dei controlli a trascinamento possono registrare un oggetto controllo connessione sostitutivo che implementa l'interfaccia IConnectionChecker
.
Per implementare i tuoi controlli di sicurezza: esegui l'override di doSafetyChecks
sul controllo connessione.
Per implementare i controlli del tipo personalizzati: esegui l'override di doTypeChecks
sul controllo connessione.
Per implementare i controlli di trascinamento: esegui l'override di doDragChecks
sul controllo connessione.
Codice di esempio
Il plug-in di controllo connessione strict è un semplice esempio di controllo personalizzato.