שדות משתנים

שדה משתנה שומר מחרוזת כערך שלו ומחרוזת כטקסט שלו. הערך הוא מזהה של משתנה, והטקסט הוא שם המשתנה.

שדה משתנה

בלוק עם התווית 'variable:‎' ושדה תפריט נפתח עם האפשרות 'x' מסומנת.

שדה משתנה עם העורך פתוח

אותו בלוק עם התפריט הנפתח פתוח. התפריט כולל את הפריטים 'x', 'שינוי שם המשתנה…' ו'מחיקת המשתנה x'.

שדה משתנה בבלוק מכווץ

אותו בלוק אחרי הכיווץ. היא כוללת את התווית 'variable: 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');
  }
};

ה-constructor של המשתנה מקבל שם משתנה אופציונלי, מבצע אימות אופציונלי, מערך אופציונלי של סוגי משתנים וסוג ברירת מחדל אופציונלי.

  • שם המשתנה צריך להיות מחרוזת. זה יהיה השם של המשתנה הראשוני ששדה מכיל. אם הוא null או לא מוגדר, ייווצר שם ייחודי.
  • variable types צריך להיות מערך של מחרוזות. כך השדה יידע אילו סוגי משתנים הוא יכול להכיל (כלומר אילו סוגי משתנים צריך להוסיף לתפריט הנפתח). אם הערך הוא null או לא מוגדר, כל סוגי המשתנים יתקבלו (וייתווספו לתפריט הנפתח).
  • סוג ברירת המחדל צריך להיות מחרוזת. המערכת תשתמש בו כשיוצרים את מודל המשתנה הראשוני של השדה. אם הוא מוגדר, צריך לכלול אותו במערך של סוגי המשתנים. אם הערך הוא null או undefined, הערך שמוגדר כברירת מחדל הוא מחרוזת ריקה, כלומר סוג המשתנה הראשוני יהיה גמיש.

→ מידע נוסף על סיווג קפדני זמין במאמר בדיקות סוגים.

סידור הפרקים

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 פועל לפי אותם כללים כמו פרמטר ברירת המחדל של סוג ה-constructor.
  • הטקסט הפנימי של הצומת הוא שם המשתנה. ערך הטקסט הפנימי פועל לפי אותם כללים כמו הפרמטר של שם המשתנה של ה-constructor.

יצירת מאמת משתנה

הערך של שדה משתנה הוא מחרוזת, ולכן כל מאמתים חייבים לקבל מחרוזת ולהחזיר מחרוזת, null או undefined.

זוהי דוגמה לאימות שמקבל רק משתנים מוגדרים מראש כאפשרויות. צריך להגדיר את המשתנים האלה באמצעות הפונקציה Workspace.createVariable כשסביבת העבודה נטענת.

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

קובץ GIF מונפש שמציג את פונקציית האימות בפעולה. כשבוחרים באפשרות &#39;Picard&#39; או &#39;Riker&#39; בתפריט הנפתח, התפריט הנפתח מוגדר לאפשרות הזו. כשבוחרים באפשרות &#39;x&#39;, התפריט הנפתח מוגדר לאפשרות הקודמת, כלומר &#39;Riker&#39;.