الحقول المتغيرة

يخزّن حقل المتغيّر سلسلة كقيمة له، وسلسلة كنص له. القيمة هي رقم تعريف متغيّر، بينما النص هو اسم متغيّر.

حقل المتغيّر

مربّع يحمل التصنيف "المتغير:" وحقل قائمة منسدلة تم اختيار "x" فيه

حقل المتغيّر مع فتح المحرّر

الحظر نفسه مع فتح القائمة المنسدلة تحتوي القائمة على العناصر "x" و"إعادة تسمية المتغير..." و"حذف المتغير x"

حقل المتغيّر في كتلة مصغّرة

الكتلة نفسها بعد تصغيرها يحتوي على التصنيف "المتغير: x" وحافة يمنى متعرجة للإشارة إلى أنّه مصغّر.

الإنشاء

بدون نوع

JSON

{
  "type": "example_variable_untyped",
  "message0": "variable: %1",
  "args0": [
    {
      "type": "field_variable",
      "name": "FIELDNAME",
      "variable": "x"
    }
  ]
}

JavaScript

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"
    }
  ]
}

JavaScript

Blockly.Blocks['example_variable_typed'] = {
  init: function() {
    this.appendDummyInput()
      .appendField('variable:')
      .appendField(new Blockly.FieldVariable(
          'X',
          null,
          ['Number', 'String'],
          'Number'
      ), 'FIELDNAME');
  }
};

يأخذ منشئ المتغيّر اسم متغيّر اختياريًا ومُدقّقًا اختياريًا ومصفوفة اختيارية من أنواع المتغيّرات ونوعًا تلقائيًا اختياريًا.

  • يجب أن يكون اسم المتغيّر سلسلة. سيكون هذا اسم المتغيّر الأولي الذي يحتوي عليه الحقل. إذا كانت القيمة خالية أو غير محدّدة، سيتم إنشاء اسم فريد.
  • يجب أن تكون أنواع المتغيّرات مصفوفة من السلاسل. يُعلم هذا الحقل بأنواع المتغيّرات التي يمكن أن يحتوي عليها (أي أنواع المتغيّرات التي يجب إضافتها إلى القائمة المنسدلة). إذا كانت القيمة خالية أو غير محدّدة، سيتم قبول جميع أنواع المتغيّرات (وإضافتها إلى القائمة المنسدلة).
  • يجب أن يكون النوع التلقائي سلسلة. سيتم استخدام هذا النوع عند إنشاء نموذج المتغيّر الأولي للحقل. إذا تم تحديد هذا النوع، يجب تضمينه في مصفوفة أنواع المتغيّرات. إذا كانت القيمة خالية أو غير محدّدة، ستكون القيمة التلقائية هي سلسلة فارغة، ما يعني أنّ المتغيّر الأولي سيكون من نوع مرن.

← لمزيد من المعلومات حول تحديد النوع بدقة، يُرجى الاطّلاع على عمليات التحقّق من النوع.

نشر الحلقات على نحو متسلسِل

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.getVariableMap().createVariable عند تحميل مساحة العمل.

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

صورة GIF متحركة تعرض وظيفة التحقّق من الصحة أثناء العمل. عند اختيار &quot;بيكار&quot; أو &quot;رايكر&quot; من القائمة المنسدلة، يتم ضبط القائمة المنسدلة على هذا الخيار. عند اختيار &quot;x&quot;، يتم ضبط القائمة المنسدلة على الخيار السابق، وهو &quot;Riker&quot;.