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

Typé

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 programme de validation 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 contient le champ. Si la valeur est nulle ou non dé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 à la liste déroulante). Si la valeur est nulle ou non définie, tous les types de variables sont acceptés (et ajoutés à la liste déroulante).
  • Le type par défaut doit être une chaîne. Il est utilisé lors de la création du modèle de variable initial du champ. S'il est défini, il doit être inclus dans le tableau des types de variables. Si la valeur est nulle ou non définie, elle 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 le typage strict, consultez la section 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 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 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 comme options. Ces variables doivent être définies avec la Workspace.getVariableMap().createVariable fonction 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 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 &quot;x&quot; est sélectionné, le menu déroulant est défini sur le choix précédent, à savoir &quot;Riker&quot;.