Un champ de variable stocke une chaîne comme valeur et une chaîne comme texte. La valeur est un ID de variable, tandis que le texte est le nom d'une variable.
Champ de variable
Champ de variable avec l'éditeur ouvert
Champ de variable sur un bloc réduit
Création
Non typé
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');
}
};
Saisie
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');
}
};
Le constructeur de variables accepte un nom de variable facultatif, un validateur facultatif, un tableau facultatif de types de variables et un type par défaut facultatif.
- Le nom de la variable doit être une chaîne. Il s'agit du nom de la variable initiale contenue dans le champ. Si la valeur est nulle ou indéfinie, un nom unique est généré.
- Les types de variables doivent être un tableau de chaînes. Cela indique au champ les types de variables qu'il peut contenir (c'est-à-dire les types de variables à ajouter au menu déroulant). Si elle est nulle ou indéfinie, tous les types de variables seront acceptés (et ajoutés au menu déroulant).
- Le type par défaut doit être une chaîne. Cette valeur sera utilisée lors de la création du modèle de variable initial du champ. Si cette valeur est définie, elle doit être incluse dans le tableau des types de variables. Si cette valeur est nulle ou indéfinie, elle est définie par défaut sur une chaîne vide, ce qui signifie que la variable initiale sera de type flexible.
→ Pour en savoir plus sur le typage strict, consultez Vérifications de type.
Sérialisation
JSON
Le code JSON d'un champ de variable se présente comme suit :
{
"fields": {
"FIELDNAME": {
"id": "QJD^+@[RVIwbLSZoDb:V"
}
}
}
Où FIELDNAME
est une chaîne faisant référence à un champ de variable, et la valeur est l'ID de la variable à laquelle le champ fait référence.
Si vous utilisez ce champ dans la boîte à outils, vous pouvez également spécifier directement le nom et le type (facultatif), car aucune variable ne sera disponible pour la référence.
{
"fields": {
"FIELDNAME": {
"name": "my_variable",
"type": "string"
}
}
}
XML
Le code XML d'un champ de variable se présente comme suit :
<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
- L'attribut
name
du nœud contient une chaîne faisant référence à un champ de variable. - L'attribut
id
du nœud contient l'ID de la variable à laquelle le champ fait référence. - L'attribut
variabletype
du nœud contient le type de la variable.variabletype
suit les mêmes règles que le paramètre de type par défaut du constructeur. - Le texte interne du nœud correspond au nom de la variable. La valeur du texte interne suit les mêmes règles que le paramètre de nom de variable du constructeur.
Créer un validateur de variable
La valeur d'un champ de variable est une chaîne. Par conséquent, tous les validateurs doivent accepter une chaîne et renvoyer une chaîne, null
ou undefined
.
Voici un exemple de validateur qui n'accepte que certaines variables prédéfinies comme options. Ces variables devront être définies avec la fonction Workspace.getVariableMap().createVariable
lorsque l'espace de travail est chargé.
function(newValue) {
var validIds = ['Worf', 'Riker', 'Picard'];
if (validIds.indexOf(newValue) == -1) {
return null;
}
return newValue;
}