Pole zmienne przechowuje ciąg znaków jako wartość i ciąg znaków jako tekst. Wartość to identyfikator zmiennej, a tekst to jej nazwa.
Pole zmienne
Pole zmiennej z otwartym edytorem
Pole zmienne w zwiniętym bloku
na podstawie trendów
Bez typu
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 zmiennej przyjmuje opcjonalną nazwę zmiennej, opcjonalny walidator, opcjonalny tablicowy zbiór typów zmiennych i opcjonalny typ domyślny.
- Nazwa zmiennej powinna być ciągiem znaków. Będzie to nazwa zmiennej początkowej przechowywanej w polu. Jeśli jest ona pusta lub niezdefiniowana, zostanie wygenerowana unikalna nazwa.
- Typy zmiennych powinny być tablicą ciągów znaków. To pole określa, jakie typy zmiennych może zawierać (czyli jakie typy zmiennych należy dodać do menu). Jeśli jest ona pusta lub niezdefiniowana, wszystkie typy zmiennych będą akceptowane (i dodawane do menu).
- Domyślny typ powinien być ciągiem znaków. Zostanie on użyty podczas tworzenia początkowego modelu zmiennej pola. Jeśli jest zdefiniowany, należy go uwzględnić w tablicy typów zmiennych. Jeśli jest ona null lub nieokreślona, domyślnie przyjmuje postać pustego ciągu znaków, co oznacza, że początkowa zmienna będzie miała typ elastyczny.
→ Więcej informacji o ścisłym typowaniu znajdziesz w artykule Sprawdzanie typów.
Publikacja w odcinkach
JSON
Kod JSON dla pola zmiennego wygląda tak:
{
"fields": {
"FIELDNAME": {
"id": "QJD^+@[RVIwbLSZoDb:V"
}
}
}
Gdzie FIELDNAME
to ciąg znaków odwołujący się do pola zmiennego, a wartość to identyfikator zmiennej, do której odwołuje się pole.
Jeśli używasz tego pola w skrzynce narzędzi, możesz też bezpośrednio podać nazwę i (opcjonalnie) typ, ponieważ nie będzie dostępnej zmiennej do odwołania.
{
"fields": {
"FIELDNAME": {
"name": "my_variable",
"type": "string"
}
}
}
XML
Kod XML pola zmiennego 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 odwołuje się pole. - Atrybut
variabletype
węzła zawiera typ zmiennej. Parametrvariabletype
podlega tym samym regułom co domyślny parametr typu konstruktora. - Tekst wewnątrz węzła to nazwa zmiennej. Wartość tekstu wewnętrznego podlega tym samym regułom co parametr nazwy zmiennej konstruktora.
Tworzenie weryfikatora zmiennej
Wartość pola zmiennego to ciąg znaków, więc wszystkie walidatory muszą akceptować ciąg znaków i zwracać ciąg znaków, null
lub undefined
.
Oto przykład walidatora, który akceptuje jako opcje tylko niektóre zdefiniowane wstępnie zmienne. Te zmienne trzeba 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;
}