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

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

فیلد متغیر

یک بلوک با برچسب "variable:" و یک فیلد کشویی با "x" انتخاب شده.

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

همان بلوک با منوی کشویی باز. منو شامل موارد "x"، "تغییر نام متغیر..." و "حذف متغیر "x" است.

فیلد متغیر در بلوک فروریخته

همان بلوک پس از جمع شدن. برچسب آن "متغیر: x" و یک لبه‌ی سمت راست ناهموار است که نشان می‌دهد جمع شده است.

خلقت

تایپ نشده

جی‌سون

{
  "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');
  }
};

تایپ شده

جی‌سون

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

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

سریال‌سازی

جی‌سون

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.getVariableMap().createVariable تعریف شوند.

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

یک GIF متحرک که عملکرد اعتبارسنجی را در حال کار نشان می‌دهد. وقتی "Picard" یا "Riker" از منوی کشویی انتخاب می‌شود، منوی کشویی روی آن انتخاب تنظیم می‌شود. وقتی "x" انتخاب می‌شود، منوی کشویی روی انتخاب قبلی، یعنی "Riker" تنظیم می‌شود.