Trường biến

Một trường biến lưu trữ một chuỗi dưới dạng giá trị và một chuỗi dưới dạng văn bản của chuỗi đó. Giá trị là mã nhận dạng của một biến, còn văn bản là tên của biến.

Trường biến

Trường biến có trình chỉnh sửa đang mở

Trường biến trên khối đã thu gọn

dựa trên xu hướng

Chưa nhập

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

Đã nhập

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

Hàm khởi tạo biến có một tên biến không bắt buộc, một validator không bắt buộc, một mảng các loại biến không bắt buộc và một loại mặc định không bắt buộc.

  • Tên biến phải ở dạng chuỗi. Đây sẽ là tên của biến ban đầu mà trường này chứa. Nếu giá trị này rỗng hoặc không xác định, một tên duy nhất sẽ được tạo.
  • Các loại biến phải là một mảng chuỗi. Giá trị này cho trường biết loại biến mà trường có thể chứa (tức là loại biến cần thêm vào trình đơn thả xuống). Nếu biến đó có giá trị rỗng hoặc không xác định, tất cả các loại biến sẽ được chấp nhận (và thêm vào trình đơn thả xuống).
  • Loại mặc định phải là một chuỗi. Giá trị này sẽ được dùng khi tạo mô hình biến ban đầu của trường. Nếu thuộc tính này được xác định, thì nó phải được đưa vào mảng loại biến. Nếu có giá trị rỗng hoặc không xác định, thì giá trị này sẽ mặc định thành một chuỗi trống, nghĩa là biến ban đầu sẽ được nhập một cách linh hoạt.

→ Để biết thêm thông tin về việc nhập nghiêm ngặt, hãy xem phần Kiểm tra loại.

Chuyển đổi tuần tự

JSON

JSON cho một trường biến sẽ có dạng như sau:

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

Trong đó FIELDNAME là một chuỗi tham chiếu đến một trường biến và giá trị là mã nhận dạng của biến mà trường này tham chiếu đến.

Nếu đang sử dụng trường này trong hộp công cụ, bạn cũng có thể chỉ định trực tiếp tên và loại (không bắt buộc), vì sẽ không có biến nào để tham chiếu.

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

XML

Mã XML cho một trường biến sẽ có dạng như sau:

<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
  • Thuộc tính name của nút chứa một chuỗi tham chiếu đến một trường biến.
  • Thuộc tính id của nút chứa mã nhận dạng của biến mà trường tham chiếu đến.
  • Thuộc tính variabletype của nút chứa loại biến. variabletype tuân theo các quy tắc tương tự như tham số loại mặc định của hàm khởi tạo.
  • Văn bản bên trong của nút là tên của biến. Giá trị văn bản bên trong tuân theo các quy tắc tương tự như tham số tên biến của hàm khởi tạo.

Tạo trình xác thực biến

Giá trị của trường biến là một chuỗi, do đó, mọi trình xác thực đều phải chấp nhận một chuỗi và trả về một chuỗi, null hoặc undefined.

Dưới đây là ví dụ về một trình xác thực chỉ chấp nhận một số biến định sẵn làm tuỳ chọn. Bạn cần xác định các biến này bằng hàm Workspace.createVariable khi không gian làm việc được tải.

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