Variablenfelder

In einem Variablenfeld wird ein String als Wert und ein String als Text gespeichert. Die "value" ist die ID einer Variablen, während der Text der Name einer Variablen ist.

Variablenfeld

Variablenfeld mit geöffnetem Editor

Variablenfeld in minimiertem Block

Erstellung

Nicht eingegeben

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, ein optionales Feld validator, ein optionales Array von Variablen -Typen und einen optionalen Standardtyp.

  • Der Variablenname sollte ein String sein. Dies ist der Name des die das Feld enthält. Wenn er null ist oder nicht definiert ist, gilt ein eindeutiger Name. generiert.
  • Die Variablentypen sollten ein Array von Strings sein. Dadurch weiß das Feld, welche Variablentypen das Feld enthalten kann (d.h. welche Variablentypen hinzufügen). Wenn der Wert null oder nicht definiert ist, akzeptiert und dem Drop-down-Menü hinzugefügt werden.
  • Der Standardtyp sollte ein String sein. Diese wird bei der Erstellung des das anfängliche Variablenmodell des Felds. Wenn dies definiert ist, sollte es enthalten sein. im Variablentypen-Array. Wenn er null ist oder nicht definiert ist, wird dieser Wert standardmäßig festgelegt. in einen leeren String, d. h., die ursprüngliche Variable wird flexibel eingegeben.

→ 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 auch den Namen und (optional) eingeben, da keine Variable zur Verfügung steht, Referenz.

{
  "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, die im Feld verwendet wird Referenzen.
  • Das Attribut variabletype des Knotens enthält den Typ der Variablen. Die Für variabletype 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 Variablennamenparameter des Konstruktors.

Variablenvalidierung erstellen

Der Wert eines Variablenfelds ist ein String. Daher müssen alle Validatoren einen String und gibt einen String, null oder undefined zurück.

Hier ist ein Beispiel für eine Validierung, die nur einige Optionen. Diese Variablen müssten mit dem Parameter Workspace.createVariable wenn der Arbeitsbereich geladen wird.

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