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. 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 một biến.
Trường biến
Trường biến với 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
Không có kiểu
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 nhận một tên biến không bắt buộc, một trình xác thực 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 là một chuỗi. Đây sẽ là tên của biến ban đầu mà trường chứa. Nếu giá trị này là rỗng hoặc không xác định, thì một tên duy nhất sẽ được tạo.
- Loại biến phải là một mảng chuỗi. Thao tác 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 giá trị này là 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à được thêm vào trình đơn thả xuống).
- Loại mặc định phải là một chuỗi. Phương thức này sẽ được dùng khi tạo mô hình biến ban đầu của trường. Nếu được xác định, bạn phải đưa loại biến này vào mảng loại biến. Nếu giá trị này là rỗng hoặc không xác định, giá trị này sẽ mặc định là một chuỗi trống, nghĩa là biến ban đầu sẽ được nhập 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 trường biến 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 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 tên và loại (không bắt buộc) trực tiếp, vì sẽ không có biến nào để tham chiếu.
{
"fields": {
"FIELDNAME": {
"name": "my_variable",
"type": "string"
}
}
}
XML
Mã XML cho trường biến 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 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 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 giống 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, vì vậy, mọi trình xác thực 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ề trình xác thực chỉ chấp nhận một số biến được xác định trước 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 tải không gian làm việc.
function(newValue) {
var validIds = ['Worf', 'Riker', 'Picard'];
if (validIds.indexOf(newValue) == -1) {
return null;
}
return newValue;
}