숫자 필드

숫자 필드는 숫자를 value로, 문자열을 text로 저장합니다. value은 생성 시 필드에 지정된 제약 조건에 따라 항상 유효한 숫자입니다. 텍스트는 편집기에 입력된 문자열일 수 있습니다.

숫자 필드

'number:' 라벨이 지정된 블록과 100으로 설정된 숫자 필드

편집기가 열린 숫자 필드

필드가 수정된 동일한 블록입니다.

접힌 블록의 숫자 필드

접힌 후의 동일한 블록 'number: 100'이라는 라벨이 있고 접혀 있음을 나타내는 들쭉날쭉한 오른쪽 가장자리가 있습니다.

생성

JSON

{
  "type": "example_number",
  "message0": "number: %1",
  "args0": [
    {
      "type": "field_number",
      "name": "FIELDNAME",
      "value": 100,
      "min": 0,
      "max": 100,
      "precision": 10
    }
  ]
}

자바스크립트

Blockly.Blocks['example_number'] = {
  init: function() {
    this.appendDummyInput()
        .appendField("number:")
        .appendField(new Blockly.FieldNumber(100, 0, 100, 10), 'FIELDNAME');
  }
};

숫자 생성자는 다음을 사용합니다.

value는 숫자로 변환되어야 합니다. 그렇지 않으면 0이 사용됩니다.

직렬화

JSON

숫자 필드의 JSON은 다음과 같습니다.

{
  "fields": {
    "FIELDNAME": 0
  }
}

여기서 FIELDNAME은 숫자 필드를 참조하는 문자열이고 값은 필드에 적용할 값입니다. 값은 생성자 값과 동일한 규칙을 따릅니다.

XML

숫자 필드의 XML은 다음과 같습니다.

<field name="FIELDNAME">0</field>

field 노드의 name 속성에는 숫자 필드를 참조하는 문자열이 포함되고 노드의 내부 text는 필드에 적용할 value입니다. 내부 텍스트 값은 생성자 값과 동일한 규칙을 따릅니다.

제약조건

제약 조건은 필드 정의에서 설정하거나 setConstraints 함수를 사용하여 설정할 수 있습니다.

최솟값

min 값은 필드에 포함될 수 있는 가장 작은 값/가장 음수 값을 설정합니다.

최댓값

max 값은 필드가 포함할 수 있는 가장 큰/가장 양수 값을 설정합니다.

반올림

precision는 값을 정밀도의 가장 가까운 배수로 반올림합니다. 이를 사용하여 필드에서 0 .01, 10, 42 등의 배수만 허용하도록 할 수 있습니다.

일반적인 제약 조건

양수

필드에서 양수만 허용하도록 강제하려면 min 값을 1로 설정합니다.

정수

필드에서 정수만 허용하도록 강제하려면 precision를 1로 설정합니다.

숫자 유효성 검사기 만들기

숫자 필드의 값은 숫자이므로 모든 유효성 검사기는 number을 허용하고 number, null 또는 undefined을 반환해야 합니다.

값이 홀수인지 짝수인지에 따라 값을 0 또는 1로 변경하는 유효성 검사기의 예는 다음과 같습니다.

function(newValue) {
  return newValue % 2;
}

작동 중인 유효성 검사기를 보여주는 애니메이션 GIF 사용자가 10을 입력하고 다른 곳을 클릭하면 필드가 0으로 설정됩니다. 사용자가 11을 입력하고 다른 곳을 클릭하면 필드가 1로 설정됩니다.