Champs de variables

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

Bloc avec le libellé "variable:" et un champ déroulant avec "x" sélectionné.

Champ de variable avec l'éditeur ouvert

Le même bloc avec le menu déroulant ouvert. Le menu contient les éléments "x", "Renommer la variable..." et "Supprimer la variable "x"".

Champ de variable sur un bloc réduit

Le même bloc après avoir été réduit. Il comporte le libellé "variable : x" et un bord droit dentelé pour indiquer qu'il est 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"
    }
  }
}

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

GIF animé montrant la fonction de validation en action. Lorsque &quot;Picard&quot; ou &quot;Riker&quot; est sélectionné dans le menu déroulant, ce choix est appliqué. Lorsque &quot;x&quot; est sélectionné, le menu déroulant est défini sur le choix précédent, à savoir &quot;Riker&quot;.