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. Elementvariabletype
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;
}