Champs de variables

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

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

Champ de variable avec l'éditeur ouvert

Même bloc avec la liste déroulante ouverte. Le menu contient les éléments "x", "Renommer la variable…" et "Supprimer la variable "x"".

Champ de variable sur un bloc réduit

Même bloc après avoir été replié. Il porte le libellé "variable: x" et une bordure dentelée sur la droite pour indiquer qu'il est 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"
    }
  }
}

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

GIF animé montrant le fonctionnement de la fonction de validation. Lorsque &quot;Picard&quot; ou &quot;Riker&quot; est sélectionné dans le menu déroulant, le menu déroulant est défini sur ce choix. Lorsque l&#39;utilisateur sélectionne &quot;x&quot;, le menu déroulant est défini sur le choix précédent, à savoir &quot;Riker&quot;.