Campos variáveis

Um campo de variável armazena uma string como seu valor e uma string como seu texto. A value é o ID de uma variável, e o texto é o nome dela.

Campo da variável

Campo de variável com o editor aberto

Campo de variável no bloco recolhido

Criação

Sem digitação

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

Tipado

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

O construtor de variável recebe um nome de variável opcional, um validador, uma matriz opcional de variáveis e um tipo padrão opcional.

  • O nome da variável deve ser uma string. Este será o nome do variável inicial que o campo mantém. Se for nulo ou indefinido, um nome exclusivo será gerado.
  • Os tipos de variável precisam ser uma matriz de strings. Isso informa ao campo que tipos de variáveis o campo pode conter (ou seja, que tipos de variáveis devem ser adicionar ao menu suspenso). Se for nulo ou indefinido, todos os tipos de variáveis ser aceitos (e adicionados ao menu suspenso).
  • O tipo padrão deve ser uma string. Ele será usado ao criar o modelo de variável inicial do campo. Se isso for definido, deverá ser incluído na matriz de tipos de variáveis. Se for nulo ou indefinido, o valor padrão como uma string vazia, o que significa que a variável inicial será digitada de forma flexível.

→ Para mais informações sobre digitação restrita, consulte Verificações de tipo.

Serialização

JSON

O JSON de um campo de variável é assim:

{
  "fields": {
    "FIELDNAME": {
      "id": "QJD^+@[RVIwbLSZoDb:V"
    }
  }
}

Em que FIELDNAME é uma string que faz referência a um campo de variável e o valor é o ID da variável a que o campo faz referência.

Se você estiver usando este campo na caixa de ferramentas, também poderá especificar o nome e (opcional), já que não haverá variáveis disponíveis para de referência.

{
  "fields": {
    "FIELDNAME": {
      "name": "my_variable",
      "type": "string"
    }
  }
}

XML

O XML de um campo de variável tem a seguinte aparência:

<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
  • O atributo name do nó contém uma string que faz referência a um campo de variável.
  • O atributo id do nó contém o ID da variável do campo de referência.
  • O atributo variabletype do nó contém o tipo da variável. A variabletype segue as mesmas regras do parâmetro de tipo padrão do construtor.
  • O texto interno do nó é o nome da variável. O valor do texto interno segue as mesmas regras do parâmetro de nome da variável do construtor.

Como criar um validador de variáveis

O valor de um campo de variável é uma string, portanto, todos os validadores devem aceitar uma string e retornar uma string, null ou undefined.

Aqui está um exemplo de um validador que aceita apenas algumas variáveis predefinidas como . Essas variáveis precisam ser definidas com o Workspace.createVariable quando o espaço de trabalho for carregado.

function(newValue) {
  var validIds = ['Worf', 'Riker', 'Picard'];
  if (validIds.indexOf(newValue) == -1) {
    return null;
  }
  return newValue;
}