שדות משתנים

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

שדה משתנה

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

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

יצירה

לא הוזנו

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 של המשתנים מזינים שם של משתנה אופציונלי, validator, מערך אופציונלי של משתנים וסוג ברירת מחדל אופציונלי.

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

יצירת כלי לאימות משתנים

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

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

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