변수 필드는 문자열을 값으로 저장하고 문자열을 텍스트로 저장합니다. 이 value는 변수의 ID이고, text는 변수의 이름입니다.
변수 필드
편집기가 열려 있는 변수 필드
접힌 블록의 변수 입력란
생성
입력되지 않음
JSON
{
"type": "example_variable_untyped",
"message0": "variable: %1",
"args0": [
{
"type": "field_variable",
"name": "FIELDNAME",
"variable": "x"
}
]
}
자바스크립트
Blockly.Blocks['example_variable_untyped'] = {
init: function() {
this.appendDummyInput()
.appendField('variable:')
.appendField(new Blockly.FieldVariable('x'), 'FIELDNAME');
}
};
유형
JSON
{
"type": "example_variable_typed",
"message0": "variable: %1",
"args0": [
{
"type": "field_variable",
"name": "FIELDNAME",
"variable": "x",
"variableTypes": ["Number", "String"],
"defaultType": "Number"
}
]
}
자바스크립트
Blockly.Blocks['example_variable_typed'] = {
init: function() {
this.appendDummyInput()
.appendField('variable:')
.appendField(new Blockly.FieldVariable(
'X',
null,
['Number', 'String'],
'Number'
), 'FIELDNAME');
}
};
변수 생성자는 선택적 변수 이름, 선택적 검사기는 선택적 변수의 배열입니다. 유형 및 선택사항인 기본 유형이 있습니다.
- 변수 이름은 문자열이어야 합니다. 이 이름은 필드가 보유하는 초기 변수입니다. null이거나 고유한 이름이 정의되지 않은 경우 생성됩니다.
- 변수 유형은 문자열의 배열이어야 합니다. 이렇게 하면 필드가 보유할 수 있는 변수 유형 (예: 드롭다운에 추가). null이거나 정의되지 않은 경우 모든 변수 유형은 드롭다운에 추가됩니다.
- 기본 유형은 문자열이어야 합니다. 이 속성은 필드의 초기 변수 모델을 반환할 수 있습니다 정의된 경우 변수 유형 배열에 있어야 합니다. null이거나 정의되지 않은 경우 이 값은 기본값입니다. 를 빈 문자열로 반환합니다. 이는 초기 변수의 유형이 유연하게 입력됨을 의미합니다.
→ 엄격한 입력에 관한 자세한 내용은 유형 검사.
직렬화
JSON
변수 필드의 JSON은 다음과 같습니다.
{
"fields": {
"FIELDNAME": {
"id": "QJD^+@[RVIwbLSZoDb:V"
}
}
}
여기서 FIELDNAME
는 변수 필드를 참조하는 문자열입니다.
값은 필드가 참조하는 변수의 ID입니다.
도구 상자에서 이 필드를 사용하는 경우 및 (선택사항)을 직접 입력합니다. 이는 참조
{
"fields": {
"FIELDNAME": {
"name": "my_variable",
"type": "string"
}
}
}
XML
변수 필드의 XML은 다음과 같습니다.
<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
- 노드의
name
속성에 변수 필드를 참조하는 문자열이 포함되어 있습니다. - 노드의
id
속성에는 필드가 있는 변수의 ID가 포함되어 있습니다. 참조 - 노드의
variabletype
속성에는 변수 유형이 포함됩니다. 이variabletype
는 생성자의 기본 유형 매개변수와 동일한 규칙을 따릅니다. - 노드의 내부 텍스트는 변수의 이름입니다. 내부 텍스트 값입니다. 생성자의 변수 이름 매개변수와 동일한 규칙을 따릅니다.
변수 검사기 만들기
변수 필드의 값은 문자열이므로 모든 유효성 검사자는 문자열과
문자열, null
또는 undefined
을 반환합니다.
이것은 있습니다. 이러한 변수는 Workspace.createVariable 함수를 호출합니다.
function(newValue) {
var validIds = ['Worf', 'Riker', 'Picard'];
if (validIds.indexOf(newValue) == -1) {
return null;
}
return newValue;
}