ভেরিয়েবল

ভেরিয়েবল একটি গুরুত্বপূর্ণ প্রোগ্রামিং ধারণা। ব্লকলি পাইথন এবং জাভাস্ক্রিপ্টের মতো গতিশীলভাবে টাইপ করা ভাষাগুলিকে সমর্থন করে এবং সামান্য অতিরিক্ত কাজের সাথে, আপনি জাভা বা সি-এর মতো শক্তিশালী টাইপ করা ভাষা (বা স্ট্যাটিক টাইপ করা ভাষা) সমর্থন করার জন্য তথ্য যোগ করতে পারেন।

এখানে ডায়মিক বনাম স্ট্যাটিক টাইপ করা ভাষা সম্পর্কে আরও তথ্য রয়েছে।

ব্লকভাবে পরিবর্তনশীল ক্ষেত্র সরবরাহ করে যা গতিশীল ড্রপডাউন বাক্স যা ব্যবহারকারীর দেওয়া ভেরিয়েবলের নাম দেখায়। নীচে একটি উদাহরণ.

ডিফল্টরূপে, Blockly যেকোন প্রকারকে একটি ভেরিয়েবলে বরাদ্দ করার অনুমতি দেয় এবং Blockly-এর প্রদত্ত সমস্ত জেনারেটর গতিশীলভাবে টাইপ করা ভাষার জন্য। আপনি যদি পরিবর্তে একটি টাইপ করা ভাষা ব্যবহার করেন তবে আপনি নিম্নলিখিতগুলি করে এটি সমর্থন করার জন্য ব্লকলি কনফিগার করতে পারেন:

টাইপ না করা পরিবর্তনশীল ব্লক

একটি ভেরিয়েবল অ্যাক্সেস এবং ম্যানিপুলেট করার জন্য সবচেয়ে মৌলিক ব্লক হল গেটার এবং সেটার ব্লক। আসুন Blockly প্রদান করা গেটার এবং সেটার ব্লকের মাধ্যমে চলুন।

JSON

// Block for variable getter.
{
  "type": "variables_get",
  "message0": "%1",
  "args0": [
    {    // Beginning of the field variable dropdown
      "type": "field_variable",
      "name": "VAR",    // Static name of the field
      "variable": "%{BKY_VARIABLES_DEFAULT_NAME}"    // Given at runtime
    }    // End of the field variable dropdown
  ],
  "output": null,    // Null means the return value can be of any type
  ...
},

// Block for variable setter.
{
  "type": "variables_set",
  "message0": "%{BKY_VARIABLES_SET}",
  "args0": [
    {
      "type": "field_variable",
      "name": "VAR",
      "variable": "%{BKY_VARIABLES_DEFAULT_NAME}"
    },
    {
      "type": "input_value",    // This expects an input of any type
      "name": "VALUE"
    }
  ],
  ...
}

জাভাস্ক্রিপ্ট

// Block for variable getter.
Blockly.Blocks['variables_get'] = {
  init: function() {
    this.appendDummyInput()
      .appendField(new Blockly.FieldVariable("VAR_NAME"), "FIELD_NAME");
    this.setOutput(true, null);
    ...
  }
};

// Block for variable setter.
Blockly.Blocks['variables_set'] = {
  init: function() {
    this.appendValueInput("NAME")
        .setCheck(null)
        .appendField("set")
        .appendField(new Blockly.FieldVariable("VAR_NAME"), "FIELD_NAME")
        .appendField("to");
    this.setOutput(true, null);
    ...
  }
};

এটি নিম্নলিখিত দুটি ব্লক তৈরি করে:

লক্ষ্য করার জন্য একটি গুরুত্বপূর্ণ বিশদটি হ'ল ভেরিয়েবল গেটারের "আউটপুট" নাল সেট করে, রিটার্ন মান যে কোনও ধরণের হতে পারে। এছাড়াও, লক্ষ্য করুন যে পরিবর্তনশীল সেটারের ইনপুট কোনো চেক নির্দিষ্ট করে না। ফলস্বরূপ, ভেরিয়েবলটি যে কোনও ধরণের মান সেট করা যেতে পারে।

টাইপ করা পরিবর্তনশীল ব্লক

আপনি গেটার এবং সেটার যোগ করতে পারেন যা টাইপ চেকিং প্রয়োগ করে। উদাহরণস্বরূপ, আপনি যদি "পান্ডা" টাইপের একটি ভেরিয়েবল তৈরি করে থাকেন, তাহলে নিম্নলিখিত সংজ্ঞাগুলি উপযুক্ত প্রকারের সাথে একটি গেটার এবং সেটার তৈরি করে।

JSON

 // Block for Panda variable getter.
 {
  "type": "variables_get_panda",
  "message0": "%1",
  "args0": [
    {
      "type": "field_variable",
      "name": "VAR",
      "variable": "%{BKY_VARIABLES_DEFAULT_NAME}",
      "variableTypes": ["Panda"],    // Specifies what types to put in the dropdown
      "defaultType": "Panda"
    }
  ],
  "output": "Panda",    // Returns a value of "Panda"
  ...
},

 // Block for Panda variable setter.
{
  "type": "variables_set_panda",
  "message0": "%{BKY_VARIABLES_SET}",
  "args0": [
    {
      "type": "field_variable",
      "name": "VAR",
      "variable": "%{BKY_VARIABLES_DEFAULT_NAME}",
      "variableTypes": ["Panda"],
      "defaultType": "Panda"
    },
    {
      "type": "input_value",
      "name": "VALUE",
      "check": "Panda"    // Checks that the input value is of type "Panda"
    }
  ],
  "previousStatement": null,
  "nextStatement": null,
  ...
}

জাভাস্ক্রিপ্ট

// Block for variable getter.
Blockly.Blocks['variables_get_panda'] = {
  init: function() {
    this.appendDummyInput()
      .appendField(new Blockly.FieldVariable(
          "VAR_NAME", ['Panda'], 'Panda'), "FIELD_NAME");
    this.setOutput(true, 'Panda');
    ...
  }
};

// Block for variable setter.
Blockly.Blocks['variables_set_panda'] = {
  init: function() {
    this.appendValueInput("NAME")
        .setCheck('Panda')
        .appendField("set")
        .appendField(new Blockly.FieldVariable(
            "VAR_NAME", null, ['Panda'], 'Panda'), "FIELD_NAME")
        .appendField("to");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
    ...
  }
};

এটি দুটি ধরণের ব্লক তৈরি করে, একটি গেটার এবং একটি সেটার। তাদের ড্রপডাউন শুধুমাত্র পান্ডা ধরনের ভেরিয়েবল প্রদর্শন করে। তাদের ইনপুট এবং আউটপুট শুধুমাত্র পান্ডা টাইপের সাথে সংযোগ গ্রহণ করে। ক্ষেত্রের defaultType variableTypes অ্যারের মানগুলির একটিতে সেট করা আবশ্যক। একটি variableTypes টাইপস অ্যারে প্রদান করার সময় defaultType সেট না করা একটি ত্রুটির কারণ হবে।

ডিফল্টরূপে ব্যবহারকারীকে কোন ধরনের ব্যবহার করা হচ্ছে তা বলার জন্য কোন ভিজ্যুয়াল সূচক নেই। পরিবর্তনশীল প্রকারভেদ করার একটি সহজ উপায় হল রঙ দ্বারা।

টুলবক্সে ভেরিয়েবল যোগ করুন

এই নতুন ধরনের ভেরিয়েবলটিকে আপনার ব্যবহারকারীদের জন্য উপযোগী করতে, আপনাকে নতুন ভেরিয়েবল তৈরি এবং ব্যবহার করার একটি উপায় যোগ করতে হবে।

ভেরিয়েবলের জন্য একটি নতুন ডায়নামিক বিভাগ তৈরি করুন যদি আপনার কাছে আগে থেকে না থাকে।

বিভাগে আপনার নতুন গেটার এবং সেটার্স যোগ করুন.

পরিবর্তনশীল বোতাম তৈরি করুন

পরবর্তী, আপনার ব্যবহারকারীর ভেরিয়েবল তৈরি করার একটি উপায় প্রয়োজন। সবচেয়ে সহজ উপায় হল একটি "ভেরিয়েবল তৈরি করুন" বোতাম

বোতাম তৈরি করার সময়, কলব্যাক কল করুন

Blockly.Variables.createVariableButtonHandler(button.getTargetWorkspace(), null, 'panda');

এবং একটি পান্ডা টাইপ ভেরিয়েবল তৈরি করা হবে!

ব্যবহারকারীদের একাধিক প্রকারের ভেরিয়েবল তৈরি করার অনুমতি দেওয়ার সবচেয়ে সহজ উপায় হল প্রতি টাইপের একটি "তৈরি করুন" বোতাম (যেমন স্ট্রিং ভেরিয়েবল তৈরি করুন, নম্বর ভেরিয়েবল তৈরি করুন, পান্ডা ভেরিয়েবল তৈরি করুন)।

আপনার যদি দুই বা তিনটি ভেরিয়েবলের বেশি ধরন থাকে, আপনি দ্রুত অনেকগুলি বোতাম দিয়ে শেষ করতে পারেন। সেই ক্ষেত্রে, একটি পপআপ প্রদর্শন করতে @blockly/plugin-typed-variable-modal ব্যবহার করার কথা বিবেচনা করুন যেখান থেকে ব্যবহারকারীরা তাদের পছন্দসই পরিবর্তনশীল প্রকার নির্বাচন করতে পারেন।

জেনারেটর সংজ্ঞায়িত করুন

অবশেষে, আপনাকে আপনার নতুন পরিবর্তনশীল ব্লকের জন্য ব্লক-কোড জেনারেটর সংজ্ঞায়িত করতে হবে। আপনি Blockly.Workspace.getAllVariables() দিয়ে সরাসরি ভেরিয়েবলের তালিকা অ্যাক্সেস করতে পারেন যাতে সব ধরনের ভেরিয়েবল পাওয়া যায় অথবা একটি নির্দিষ্ট ধরনের সব ভেরিয়েবল পেতে Blockly.Workspace.getVariablesOfType()।