Variablenfelder

In einem Variablenfeld wird 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

Ein Block mit dem Label „variable:“ und einem Drop-down-Feld, in dem „x“ ausgewählt ist.

Variablenfeld mit geöffnetem Editor

Derselbe Block mit geöffnetem Drop-down-Menü. Das Menü enthält die Elemente „x“, „Variable umbenennen…“ und „Variable ‚x‘ löschen“.

Variablenfeld in minimiertem Block

Derselbe Block nach dem Minimieren. Es hat das Label „variable: x“ und einen gezackten rechten Rand, um anzuzeigen, dass es minimiert ist.

Erstellung

Untypisiert

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');
  }
};

Getippt

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 nimmt einen optionalen Variablennamen, einen optionalen Validator, ein optionales Array von Variablentypen und einen optionalen Standardtyp entgegen.

  • Der Variablenname sollte ein String sein. Dies ist der Name der ursprünglichen Variablen, die das Feld enthält. Wenn der Wert „null“ oder „undefined“ ist, wird ein eindeutiger Name generiert.
  • Die Variablentypen sollten ein Array von Strings sein. So wird dem Feld mitgeteilt, welche Arten von Variablen es enthalten kann (d.h. welche Arten von Variablen dem Drop-down-Menü hinzugefügt werden sollen). Wenn er „null“ oder „undefiniert“ ist, werden alle Variablentypen akzeptiert und dem Drop-down-Menü hinzugefügt.
  • Der Standardtyp sollte ein String sein. Dieser Wert wird beim Erstellen des anfänglichen Variablenmodells für das Feld verwendet. Wenn dies definiert ist, sollte es in das Array der Variablentypen aufgenommen werden. Wenn der Wert „null“ oder „undefiniert“ ist, wird standardmäßig ein leerer String verwendet. Das bedeutet, dass die Variable nutzerfreundlich typisiert ist.

→ Weitere Informationen zur strengen Typisierung finden Sie unter Typprüfungen.

Serialisierung

JSON

Das JSON für ein variables Feld 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 auch den Namen und (optional) den Typ direkt angeben, da keine Variable zur Vererbung 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 name-Attribut des Knotens enthält einen String, der auf ein Variablenfeld verweist.
  • Das id-Attribut des Knotens enthält die ID der Variablen, auf die das Feld verweist.
  • Das variabletype-Attribut des Knotens enthält den Typ der Variablen. Für variabletype gelten dieselben Regeln wie für den Standardtypparameter des Konstruktors.
  • Der innere Text des Knotens ist der Name der Variablen. Der Wert des inneren Texts unterliegt denselben Regeln wie der Parameter „variable name“ des Konstruktors.

Variablenvalidierer erstellen

Der Wert eines Variablenfelds ist ein String. Alle Validator müssen also einen String akzeptieren und einen String, null oder undefined zurückgeben.

Hier ein Beispiel für einen Validator, der nur einige vordefinierte Variablen als Optionen akzeptiert. Diese Variablen müssen 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;
}

Ein animiertes GIF, das die Funktion zur Validierung zeigt. Wenn im Drop-down-Menü „Picard“ oder „Riker“ ausgewählt wird, wird das Drop-down-Menü auf diese Auswahl festgelegt. Wenn „x“ ausgewählt wird, wird das Drop-down-Menü auf die vorherige Auswahl zurückgesetzt, also „Riker“.