Pola zmiennych

Pole zmiennej przechowuje ciąg znaków jako jego wartość i ciąg znaków jako jego tekst. 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

Niewpisany

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

Wpisany

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, opcjonalnie verify, opcjonalna tablica zmiennej typu i opcjonalnym typem domyślnym.

  • Nazwa zmiennej powinna być ciągiem znaków. To będzie nazwa dla pierwszej zmiennej przechowywanej w tym polu. Jeśli ma wartość null lub jest niezdefiniowana, unikalna nazwa .
  • Typy zmiennych powinny być tablicą ciągów znaków. Informuje to pole typów zmiennych, jakie może zawierać pole (tj. jakiego typu zmiennych można dodaj do menu). Jeśli ma wartość null lub jest niezdefiniowany, wszystkie typy zmiennych zostać zaakceptowane (i dodane do menu).
  • Typ domyślny powinien być ciągiem znaków. Użyjemy go podczas tworzenia początkowym modelu zmiennych pola. Jeśli jest zdefiniowane, powinno być uwzględnione w tablicy typów zmiennych. Jeśli ma wartość null lub jest niezdefiniowana, ta wartość jest domyślna do pustego ciągu, co oznacza, że zmienną początkową będzie można wpisać elastycznie.

→ Więcej informacji o rygorystycznym pisaniu znajdziesz tutaj: Sprawdzanie typu.

Serializacja

JSON

Kod JSON pola zmiennej wygląda tak:

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

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

Jeśli używasz tego pola w przyborniku, możesz też podać nazwę i (opcjonalnie) wpisać bezpośrednio, ponieważ zmienna nie będzie dostępna dla odwołania.

{
  "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 odnoszący się do pola zmiennej.
  • Atrybut id węzła zawiera identyfikator zmiennej zawartej w polu odwołania.
  • Atrybut variabletype węzła zawiera typ zmiennej. Funkcja variabletype podlega tym samym regułom co domyślny parametr typu konstruktora.
  • Wewnętrzny tekst węzła to nazwa zmiennej. Wewnętrzna wartość tekstowa ma te same reguły co parametr nazwy zmiennej konstruktora.

Tworzenie walidatora zmiennych

Wartość pola zmiennej jest ciągiem znaków, więc wszyscy weryfikatorzy muszą zaakceptować ciąg znaków i zwraca ciąg znaków, null lub undefined.

Oto przykład walidatora, który akceptuje tylko niektóre wstępnie zdefiniowane zmienne jako: . Zmienne te należy zdefiniować za pomocą parametru Workspace.createVariable po wczytaniu obszaru roboczego.

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