Un champ de variable stocke une chaîne en tant que valeur et une chaîne en tant que texte. La valeur est l'ID d'une variable, tandis que le texte est le nom d'une variable.
Champ de variable
Champ de variable avec l'éditeur ouvert
Champ de variable dans le bloc réduit
Création
Non typée
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 effectuée
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 variable utilise un nom de variable facultatif, valideur, un tableau facultatif de variables et un type par défaut facultatif.
- Le nom de la variable doit être une chaîne. Il s'agira du nom variable initiale que le champ contient. S'il est nul ou non défini, il s'agit d'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 que le champ peut contenir (c'est-à-dire les types de variables à ajouter au menu déroulant). Si la valeur est nulle ou non définie, tous les types de variables doit être acceptée (et ajoutée au menu déroulant).
- Le type par défaut doit être une chaîne. Il sera utilisé lors de la création le modèle de variable initial du champ. Si ce champ est défini, il doit être inclus dans le tableau des types de variables. Si elle est nulle ou non définie, cette valeur est définie par défaut à une chaîne vide, ce qui signifie que la variable initiale sera saisie de manière flexible.
→ Pour en savoir plus sur la saisie stricte, 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 qui fait référence à un champ de variable, et où
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 le nom et (facultatif) taper directement, car aucune variable n'est disponible pour 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 que le champ de référence. - L'attribut
variabletype
du nœud contient le type de la variable. Lavariabletype
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 de texte interne suit les mêmes règles que le paramètre de nom de variable du constructeur.
Créer un programme de validation de variables
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 programme de validation qui n'accepte que certaines variables prédéfinies options. Ces variables doivent être définies avec Workspace.createVariable lorsque l'espace de travail est chargé.
function(newValue) {
var validIds = ['Worf', 'Riker', 'Picard'];
if (validIds.indexOf(newValue) == -1) {
return null;
}
return newValue;
}