Pola zmiennych

Pole zmiennej zawiera ciąg znaków jako wartość, a ciąg znaków jako tekst. Wartość jest identyfikatorem zmiennej, a tekst to nazwa zmiennej.

Pole zmiennej

Pole zmiennej z otwartym edytorem

Pole zmiennej w zwiniętym bloku

na podstawie trendów

Nietyp

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

Wpisane

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

Konstruktor zmiennych przyjmuje opcjonalną nazwę zmiennej, opcjonalny validator, opcjonalną tablicę typów zmiennych i opcjonalny typ domyślny.

  • Nazwa zmiennej powinna być ciągiem znaków. Będzie to nazwa początkowej zmiennej, którą zawiera pole. Jeśli ma wartość null lub jest niezdefiniowana, zostanie wygenerowana unikalna nazwa.
  • Typy zmiennych powinny być tablicami ciągów znaków. To informuje pole, jakie typy zmiennych może zawierać pole (czyli jakie typy zmiennych dodać do menu). Jeśli ta wartość ma wartość null lub jest nieokreślona, wszystkie typy zmiennych będą akceptowane (i dodane do menu).
  • Typem domyślnym powinien być ciąg znaków. Będzie ona używana podczas tworzenia początkowego modelu zmiennych pola. Jeśli ten argument jest zdefiniowany, należy go uwzględnić w tablicy typów zmiennych. Jeśli ma wartość null lub jest niezdefiniowana, domyślnie przyjmuje się pusty ciąg znaków, co oznacza, że początkowa zmienna jest wpisana elastycznie.

→ Więcej informacji o precyzyjnym pisaniu znajdziesz w artykule Sprawdzanie typu.

Serializacja

JSON

Tak wygląda kod JSON pola zmiennej:

{
  "fields": {
    "FIELDNAME": {
      "id": "QJD^+@[RVIwbLSZoDb:V"
    }
  }
}

Gdzie FIELDNAME to ciąg znaków odwołujący się do pola zmiennej, a wartość to identyfikator zmiennej, do której odnosi się pole.

Jeśli używasz tego pola w zestawie narzędzi, możesz też bezpośrednio określić nazwę i (opcjonalnie) typ, ponieważ nie będzie dostępnych zmiennych, do których można się odwoływać.

{
  "fields": {
    "FIELDNAME": {
      "name": "my_variable",
      "type": "string"
    }
  }
}

XML

Kod XML pola zmiennej wygląda tak:

<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
  • Atrybut name węzła zawiera ciąg znaków odwołujący się do pola zmiennej.
  • Atrybut id węzła zawiera identyfikator zmiennej, do której odnosi się pole.
  • Atrybut variabletype węzła zawiera typ zmiennej. Element variabletype podlega tym samym regułom co domyślny parametr typu konstruktora.
  • Tekst wewnętrzny węzła to nazwa zmiennej. Wewnętrzna wartość tekstowa podlega tym samym regułom co parametr nazwy zmiennej konstruktora.

Tworzenie walidatora zmiennych

Wartość pola zmiennej jest ciągiem tekstowym, więc wszystkie narzędzia do weryfikacji muszą zaakceptować ciąg znaków i zwrócić ciąg znaków, null lub undefined.

Oto przykład walidatora, który jako opcje akceptuje tylko niektóre wstępnie zdefiniowane zmienne. Te zmienne należy zdefiniować za pomocą funkcji Workspace.createVariable podczas wczytywania obszaru roboczego.

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