Prati

I campi sono una parte importante della generazione del codice perché definiscono valori modificabili dall'utente, tra cui stringhe, numeri e colori.

L'inclusione dei valori dei campi nel codice generato comporta il recupero del valore del campo, la sua trasformazione in una stringa utilizzabile e la concatenazione della stringa con il resto del codice.

import {javascriptGenerator} from 'blockly/javascript';

javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
  // Get the field value.
  const fieldValue = block.getFieldValue('MY_FIELD');

  // Concatenate the code.
  const code = `some code ${fieldValue} some more code`;

  // Return the code.
  return code;
}

Ottieni valori

È possibile accedere ai valori dei campi utilizzando getFieldValue. Ciò che viene restituito è diverso da un campo all'altro, pertanto ti consigliamo di consultare la documentazione relativa ai campi integrati per informazioni sul campo specifico. Ad esempio, i campi di immissione testo restituiscono il testo esatto inserito dall'utente, mentre i campi a discesa restituiscono una stringa indipendente dalla lingua associata all'elemento selezionato dall'utente.

Trasforma i valori

La maggior parte dei valori dei campi è pronta per essere concatenata immediatamente con la stringa di codice. Tuttavia, alcuni valori dei campi richiedono un lavoro aggiuntivo prima di essere utilizzabili.

Stringa

Le stringhe devono essere racchiuse tra virgolette dal generatore di codice prima di poter essere concatenate.

// For a single line text field.
const str = generator.quote_(block.getFieldValue('STR'));

// For a multiline text field.
const str = generator.multiline_quote_(block.getFieldValue('STR'));

Variabili

È necessario eseguire lo scrubbing dei nomi delle variabili dal generatore di codice prima di poter essere concatenati. Ciò è necessario per due motivi:

  1. Le variabili vengono inserite dall'utente nella lingua scelta. Ciò significa che potrebbe essere necessario convertirli in caratteri ASCII. Ad esempio, "متغير" verrebbe convertito in "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1".
  2. Le variabili possono entrare in conflitto con parole riservate. Ciò significa che potrebbero dover essere modificati per evitare conflitti. Ad esempio, "for" verrebbe convertito in "for2".
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

Concatena il codice

Dopo aver ottenuto il valore del campo e averlo convertito in una stringa, puoi concatenarlo nel punto corretto con la stringa di codice.

const code = `some code ${value} some more code`;

Codice di reso

I diversi tipi di blocchi richiedono che la stringa di codice venga restituita in modi diversi, quindi controlla le singole pagine per maggiori informazioni: