Un champ variable stocke une chaîne comme valeur et une chaîne comme texte. La valeur correspond à l'ID d'une variable, tandis que le texte correspond au nom d'une variable.
Champ de variable
Champ de variable avec l'éditeur ouvert
Champ de variable sur un bloc réduit
Création
Sans type
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 la variable reçoit un nom de variable facultatif, un valideur 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 que le champ contient. S'il est nul ou non défini, 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 non définie, tous les types de variables sont acceptés (et ajoutés au menu déroulant).
- Le type par défaut doit être une chaîne. Il sera utilisé lors de la création du modèle de variable initial du champ. Si ce paramètre est défini, il doit être inclus dans le tableau des types de variables. S'il est nul ou non défini, cette valeur est définie par défaut sur une chaîne vide, ce qui signifie que la variable initiale sera typée de manière flexible.
→ Pour en savoir plus sur la typographie stricte, consultez la section Contrôles 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 à référencer.
{
"fields": {
"FIELDNAME": {
"name": "my_variable",
"type": "string"
}
}
}
XML
Le code XML d'un champ 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 référencée par le champ. - 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 valideur qui n'accepte que certaines variables prédéfinies comme options. Ces variables doivent être définies avec la fonction Workspace.createVariable lors du chargement de l'espace de travail.
function(newValue) {
var validIds = ['Worf', 'Riker', 'Picard'];
if (validIds.indexOf(newValue) == -1) {
return null;
}
return newValue;
}