변수 필드

변수 필드는 문자열을 값으로 저장하고 문자열을 텍스트로 저장합니다. 이 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;
}