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

Campo variabile con l'editor aperto

Campo variabile sul blocco compresso

Creazione
Non tipizzato
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');
}
};
Tipizzato
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. Corrisponde al 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 all'elenco a discesa). Se è null o undefined, verranno accettati tutti i tipi di variabili (e aggiunti all'elenco a discesa).
- Il tipo predefinito deve essere una stringa. 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 undefined, il valore predefinito è una stringa vuota, il che significa che la variabile iniziale sarà tipizzata in modo flessibile.
→ Per ulteriori informazioni sulla digitazione rigorosa, vedi Controlli dei tipi.
Serializzazione
JSON
Il JSON per un campo variabile è il 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 toolbox, puoi anche specificare direttamente il nome e il tipo (facoltativo), poiché non sarà disponibile alcuna variabile a cui fare riferimento.
{
"fields": {
"FIELDNAME": {
"name": "my_variable",
"type": "string"
}
}
}
XML
L'XML per un campo variabile è il seguente:
<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
- L'attributo
namedel nodo contiene una stringa che fa riferimento a un campo variabile. - L'attributo
iddel nodo contiene l'ID della variabile a cui fa riferimento il campo. - L'attributo
variabletypedel nodo contiene il tipo di variabile.variabletypesegue le stesse regole del parametro del 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 uno strumento di convalida delle 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 strumento di convalida che accetta solo alcune variabili predefinite come opzioni. Queste variabili devono essere definite con la
Workspace.getVariableMap().createVariable
funzione al caricamento dell'area di lavoro.
function(newValue) {
var validIds = ['Worf', 'Riker', 'Picard'];
if (validIds.indexOf(newValue) == -1) {
return null;
}
return newValue;
}
