Campi variabili

Un campo variabile memorizza una stringa come valore e una stringa come testo. Il valore è un ID di una variabile, mentre il testo è il nome di una variabile.

Campo variabile

Un blocco con l'etichetta "variable:" e un campo a discesa con "x"
selezionato.

Campo variabile con l'editor aperto

Lo stesso blocco con il menu a discesa aperto. Il menu contiene le voci "x", "Rinomina
variabile…" ed "Elimina la variabile "x"".

Campo variabile nel blocco compresso

Lo stesso blocco dopo essere stato compresso. Ha l'etichetta "variabile: x" e un
bordo destro frastagliato per indicare che è
compresso.

Creazione

Senza tipo

JSON

{
  "type": "example_variable_untyped",
  "message0": "variable: %1",
  "args0": [
    {
      "type": "field_variable",
      "name": "FIELDNAME",
      "variable": "x"
    }
  ]
}

JavaScript

Blockly.Blocks['example_variable_untyped'] = {
  init: function() {
    this.appendDummyInput()
        .appendField('variable:')
        .appendField(new Blockly.FieldVariable('x'), 'FIELDNAME');
  }
};

Digitato

JSON

{
  "type": "example_variable_typed",
  "message0": "variable: %1",
  "args0": [
    {
      "type": "field_variable",
      "name": "FIELDNAME",
      "variable": "x",
      "variableTypes": ["Number", "String"],
      "defaultType": "Number"
    }
  ]
}

JavaScript

Blockly.Blocks['example_variable_typed'] = {
  init: function() {
    this.appendDummyInput()
      .appendField('variable:')
      .appendField(new Blockly.FieldVariable(
          'X',
          null,
          ['Number', 'String'],
          'Number'
      ), 'FIELDNAME');
  }
};

Il costruttore di variabili accetta un nome di variabile facoltativo, un validatore facoltativo, un array facoltativo di tipi di variabili e un tipo predefinito facoltativo.

  • Il nome della variabile deve essere una stringa. Questo sarà il nome della variabile iniziale contenuta nel campo. Se è null o undefined, verrà generato un nome univoco.
  • I tipi di variabili devono essere un array di stringhe. Indica al campo i tipi di variabili che può contenere (ovvero i tipi di variabili da aggiungere al menu a discesa). Se è null o undefined, verranno accettati tutti i tipi di variabili (e aggiunti al menu a discesa).
  • Il tipo predefinito deve essere una stringa. Questo valore verrà utilizzato durante la creazione del modello di variabile iniziale del campo. Se è definito, deve essere incluso nell'array dei tipi di variabili. Se è null o non definito, questo valore viene impostato come stringa vuota, il che significa che la variabile iniziale sarà tipizzata in modo flessibile.

→ Per ulteriori informazioni sul controllo dei tipi, vedi Controlli dei tipi.

Serializzazione

JSON

Il JSON per un campo variabile è simile al seguente:

{
  "fields": {
    "FIELDNAME": {
      "id": "QJD^+@[RVIwbLSZoDb:V"
    }
  }
}

Dove FIELDNAME è una stringa che fa riferimento a un campo variabile e il valore è l'ID della variabile a cui fa riferimento il campo.

Se utilizzi questo campo nella casella degli strumenti, puoi anche specificare direttamente il nome e (facoltativamente) il tipo, poiché non sarà disponibile alcuna variabile a cui fare riferimento.

{
  "fields": {
    "FIELDNAME": {
      "name": "my_variable",
      "type": "string"
    }
  }
}

XML

L'XML per un campo variabile è simile al seguente:

<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
  • L'attributo name del nodo contiene una stringa che fa riferimento a un campo variabile.
  • L'attributo id del nodo contiene l'ID della variabile a cui fa riferimento il campo.
  • L'attributo variabletype del nodo contiene il tipo di variabile. variabletype segue le stesse regole del parametro di tipo predefinito del costruttore.
  • Il testo interno del nodo è il nome della variabile. Il valore del testo interno segue le stesse regole del parametro del nome della variabile del costruttore.

Creazione di un validatore di variabili

Il valore di un campo variabile è una stringa, quindi tutti i validatori devono accettare una stringa e restituire una stringa, null o undefined.

Ecco un esempio di un validatore che accetta solo alcune variabili predefinite come opzioni. Queste variabili devono essere definite con la funzione Workspace.getVariableMap().createVariable quando viene caricato lo spazio di lavoro.

function(newValue) {
  var validIds = ['Worf', 'Riker', 'Picard'];
  if (validIds.indexOf(newValue) == -1) {
    return null;
  }
  return newValue;
}

Una GIF animata che mostra la funzione di convalida in azione. Quando viene selezionata l&#39;opzione &quot;Picard&quot; o
&quot;Riker&quot; dal menu a discesa, il menu a discesa viene impostato su questa scelta. Quando
viene scelta &quot;x&quot;, il menu a discesa viene impostato sull&#39;opzione precedente, ovvero
&quot;Riker&quot;.