فیلدهای متغیر

یک فیلد متغیر یک رشته را به عنوان مقدار خود و یک رشته را به عنوان متن خود ذخیره می کند. مقدار شناسه یک متغیر است، در حالی که متن نام یک متغیر است.

فیلد متغیر

فیلد متغیر با ویرایشگر باز

فیلد متغیر در بلوک جمع شده

خلقت

بدون تایپ

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 یا تعریف نشده باشد یک نام منحصر به فرد ایجاد می شود.
  • انواع متغیر باید آرایه ای از رشته ها باشد. این به فیلد می‌گوید چه نوع متغیرهایی را می‌توان در فیلد نگه داشت (یعنی چه نوع متغیرهایی را به فهرست کشویی اضافه کرد). اگر تهی یا تعریف نشده باشد، همه انواع متغیر پذیرفته می شوند (و به فهرست کشویی اضافه می شوند).
  • نوع پیش فرض باید یک رشته باشد. این هنگام ایجاد مدل متغیر اولیه فیلد استفاده خواهد شد. اگر این تعریف شده باشد، باید در آرایه انواع متغیر گنجانده شود. اگر تهی یا تعریف نشده باشد، این مقدار به صورت پیش‌فرض به یک رشته خالی تبدیل می‌شود، به این معنی که متغیر اولیه به صورت انعطاف‌پذیر تایپ می‌شود.

← برای اطلاعات بیشتر در مورد تایپ دقیق، به بررسی نوع مراجعه کنید.

سریال سازی

JSON

JSON برای یک فیلد متغیر به این صورت است:

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

جایی که FIELDNAME رشته ای است که به یک فیلد متغیر ارجاع می دهد و مقدار آن شناسه متغیری است که فیلد به آن ارجاع می دهد.

اگر از این فیلد در جعبه ابزار استفاده می‌کنید، می‌توانید نام و نوع (اختیاری) را مستقیماً مشخص کنید، زیرا هیچ متغیری برای مرجع وجود نخواهد داشت.

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

XML

XML برای یک فیلد متغیر به این صورت است:

<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
  • ویژگی name گره حاوی رشته ای است که به یک فیلد متغیر ارجاع می دهد.
  • ویژگی id گره حاوی شناسه متغیری است که فیلد به آن ارجاع می دهد.
  • ویژگی variabletype گره حاوی نوع متغیر است. variabletype از همان قوانین پارامتر نوع پیش فرض سازنده پیروی می کند.
  • متن درونی گره نام متغیر است. مقدار متن داخلی از قوانینی مشابه با پارامتر نام متغیر سازنده پیروی می کند.

ایجاد اعتبارسنجی متغیر

مقدار فیلد متغیر یک رشته است، بنابراین هر اعتبارسنجی باید یک رشته را بپذیرد و یک رشته، null یا undefined را برگرداند.

در اینجا نمونه ای از اعتبارسنجی است که فقط برخی از متغیرهای از پیش تعریف شده را به عنوان گزینه می پذیرد. این متغیرها باید با تابع Workspace.createVariable در هنگام بارگذاری فضای کاری تعریف شوند.

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