Kolom variabel

Kolom variabel menyimpan string sebagai nilainya, dan string sebagai teksnya. Nilainya adalah ID variabel, sedangkan teksnya adalah nama variabel.

Kolom variabel

Blok dengan label "variable:" dan kolom dropdown dengan "x" dipilih.

Kolom variabel dengan editor terbuka

Blok yang sama dengan dropdown terbuka. Menu memiliki item "x", "Rename
variable...", dan "Delete the "x"
variable".

Kolom variabel pada blok yang diciutkan

Blok yang sama setelah diciutkan. Kolom ini memiliki label "variable: x" dan
tepi kanan yang bergerigi untuk menunjukkan bahwa kolom ini
diciutkan.

Alat

Tidak diketik

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

Berjenis

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

Konstruktor variabel mengambil nama variabel opsional, validator opsional, array jenis variabel opsional, dan jenis default opsional.

  • Nama variabel harus berupa string. Ini akan menjadi nama variabel awal yang disimpan kolom. Jika null atau belum ditentukan, nama unik akan dibuat.
  • Jenis variabel harus berupa array string. Hal ini memberi tahu kolom jenis variabel yang dapat disimpan oleh kolom (yaitu jenis variabel yang akan ditambahkan ke dropdown). Jika null atau tidak ditentukan, semua jenis variabel akan diterima (dan ditambahkan ke dropdown).
  • default type harus berupa string. Ini akan digunakan saat membuat model variabel awal kolom. Jika ditentukan, jenis ini harus disertakan dalam array jenis variabel. Jika null atau tidak ditentukan, nilai ini akan ditetapkan secara default ke string kosong, yang berarti variabel awal akan diketik secara fleksibel.

→ Untuk mengetahui informasi selengkapnya tentang pengetikan ketat, lihat Pemeriksaan Jenis.

Serialisasi

JSON

JSON untuk kolom variabel terlihat seperti ini:

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

Dengan FIELDNAME adalah string yang mereferensikan kolom variabel, dan nilai adalah ID variabel yang direferensikan kolom.

Jika Anda menggunakan kolom ini di toolbox, Anda juga dapat menentukan nama dan (opsional) jenis secara langsung, karena tidak ada variabel yang tersedia untuk dirujuk.

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

XML

XML untuk kolom variabel terlihat seperti ini:

<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
  • Atribut name node berisi string yang mereferensikan kolom variabel.
  • Atribut id node berisi ID variabel yang dirujuk oleh kolom.
  • Atribut variabletype node berisi jenis variabel. variabletype mengikuti aturan yang sama dengan parameter jenis default konstruktor.
  • Teks dalam node adalah nama variabel. Nilai teks dalam mengikuti aturan yang sama dengan parameter nama variabel konstruktor.

Membuat validator variabel

Nilai kolom variabel adalah string, sehingga setiap validator harus menerima string dan menampilkan string, null, atau undefined.

Berikut adalah contoh validator yang hanya menerima beberapa variabel yang telah ditentukan sebelumnya sebagai opsi. Variabel ini harus ditentukan dengan fungsi Workspace.getVariableMap().createVariable saat ruang kerja dimuat.

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

GIF animasi yang menunjukkan fungsi validasi sedang bekerja. Jika &quot;Picard&quot; atau
&quot;Riker&quot; dipilih dari dropdown, dropdown akan disetel ke pilihan tersebut. Jika
&quot;x&quot; dipilih, dropdown akan disetel ke pilihan sebelumnya, yaitu
&quot;Riker&quot;.