In einem Variablenfeld werden ein String als Wert und ein String als Text gespeichert. Der Wert ist die ID einer Variablen, während der Text der Name einer Variablen ist.
Variablenfeld
Variablenfeld bei geöffnetem Editor
Variablenfeld in minimiertem Block
Erstellung
Ohne Eingabe
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 übernimmt 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 Anfangsvariable, die das Feld enthält. Wenn er null oder nicht definiert ist, wird ein eindeutiger Name generiert.
- Die Variablentypen sollten ein Array von Strings sein. Dadurch wird dem Feld mitgeteilt, welche Variablentypen das Feld enthalten kann (d.h. welche Typen von Variablen dem Drop-down-Menü hinzugefügt werden sollen). Wenn er null oder nicht definiert ist, werden alle Variablentypen akzeptiert (und dem Drop-down-Menü hinzugefügt).
- Der Standardtyp sollte ein String sein. Dieser wird beim Erstellen des anfänglichen Variablenmodells des Felds verwendet. Wenn diese definiert ist, sollte sie im Variablentypen-Array enthalten sein. Wenn der Wert null oder nicht definiert ist, wird standardmäßig ein leerer String verwendet. Das bedeutet, dass die Anfangsvariable flexibel eingegeben wird.
→ Weitere Informationen zur strikten Eingabe finden Sie unter Typprüfungen.
Serialisierung
JSON
Der JSON-Code 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 Variablen, auf die das Feld verweist.
Wenn Sie dieses Feld in der Toolbox verwenden, können Sie den Namen und (optionalen) Typ auch direkt angeben, da keine Variable verfügbar ist, auf die verwiesen werden kann.
{
"fields": {
"FIELDNAME": {
"name": "my_variable",
"type": "string"
}
}
}
XML
Der XML-Code für ein Variablenfeld sieht so aus:
<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
- Das Attribut
name
des Knotens enthält einen String, der auf ein Variablenfeld verweist. - Das Attribut
id
des Knotens enthält die ID der Variablen, auf die das Feld verweist. - Das Attribut
variabletype
des Knotens enthält den Typ der Variablen. Fürvariabletype
gelten dieselben Regeln wie für den Standardtypparameter des Konstruktors. - Der innere Text des Knotens ist der Name der Variable. Der innere Textwert folgt denselben Regeln wie der Variablennamensparameter des Konstruktors.
Variablenvalidierung erstellen
Der Wert eines Variablenfelds ist ein String. Daher müssen alle Validierungen einen String akzeptieren und einen String, null
oder undefined
zurückgeben.
Das folgende Beispiel zeigt eine Validierung, die nur einige vordefinierte Variablen als Optionen akzeptiert. Diese Variablen müssten beim Laden des Arbeitsbereichs mit der Funktion Workspace.createVariable definiert werden.
function(newValue) {
var validIds = ['Worf', 'Riker', 'Picard'];
if (validIds.indexOf(newValue) == -1) {
return null;
}
return newValue;
}