In einem Variablenfeld wird ein String als Wert und ein String als Text gespeichert. Der Wert ist eine ID einer Variablen, während der Text der Name einer Variablen ist.
Variables Feld

Variablenfeld mit geöffnetem Editor

Variable Felder in minimierten Blöcken

Erstellung
Nicht typisiert
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');
}
};
Eingegeben
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');
}
};
Der Variablenkonstruktor akzeptiert einen optionalen Variablennamen, einen optionalen Validator, ein optionales Array von Variablentypen und einen optionalen Standardtyp.
- Der Variablenname sollte ein String sein. Dies ist der Name der ursprünglichen Variable, die das Feld enthält. Wenn der Wert „null“ oder „undefined“ ist, wird ein eindeutiger Name generiert.
- Die Variablentypen sollten ein String-Array sein. Damit wird festgelegt, welche Arten von Variablen das Feld enthalten kann (d.h. welche Arten von Variablen dem Drop-down-Menü hinzugefügt werden sollen). Wenn sie „null“ oder „undefined“ ist, werden alle Variablentypen akzeptiert und dem Drop-down-Menü hinzugefügt.
- Der Standardtyp sollte ein String sein. Dieser Wert wird beim Erstellen des ersten Variablenmodells des Felds verwendet. Wenn diese definiert ist, sollte sie im Array der Variablentypen enthalten sein. Wenn er null oder nicht definiert ist, wird standardmäßig ein leerer String verwendet. Das bedeutet, dass die ursprüngliche Variable flexibel typisiert wird.
→ Weitere Informationen zur strengen Typisierung finden Sie unter Typüberprüfungen.
Serialisierung
JSON
Das JSON für ein Variablenfeld sieht so aus:
{
"fields": {
"FIELDNAME": {
"id": "QJD^+@[RVIwbLSZoDb:V"
}
}
}
Dabei ist FIELDNAME ein String, der auf ein Variablenfeld verweist, und der Wert ist die ID der Variable, auf die das Feld verweist.
Wenn Sie dieses Feld in der Toolbox verwenden, können Sie auch den Namen und optional den Typ direkt angeben, da keine Variable zum Referenzieren verfügbar ist.
{
"fields": {
"FIELDNAME": {
"name": "my_variable",
"type": "string"
}
}
}
XML
Das XML für ein variables Feld sieht so aus:
<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
- Das Attribut
namedes Knotens enthält einen String, der auf ein Variablenfeld verweist. - Das Attribut
iddes Knotens enthält die ID der Variablen, auf die sich das Feld bezieht. - Das Attribut
variabletypedes Knotens enthält den Typ der Variablen. Fürvariabletypegelten dieselben Regeln wie für den Standardtypparameter des Konstruktors. - Der innere Text des Knotens ist der Name der Variablen. Der Wert des inneren Texts folgt denselben Regeln wie der Parameter „variable name“ des Konstruktors.
Variablenvalidierung erstellen
Der Wert eines variablen Felds ist ein String. Alle Validatoren müssen also einen String akzeptieren und einen String, null oder undefined zurückgeben.
Hier ist ein Beispiel für einen Validator, der nur einige vordefinierte Variablen als Optionen akzeptiert. Diese Variablen müssen mit der Funktion Workspace.getVariableMap().createVariable definiert werden, wenn der Arbeitsbereich geladen wird.
function(newValue) {
var validIds = ['Worf', 'Riker', 'Picard'];
if (validIds.indexOf(newValue) == -1) {
return null;
}
return newValue;
}
