Functions এর Declaration এবং Definition

Functions এবং Modifiers (ফাংশন এবং মডিফায়ারস) - সলিডিটি (Solidity) - Computer Programming

361

Solidity তে functions হল কোডের ব্লক যা নির্দিষ্ট কাজ বা কার্য সম্পাদন করতে ব্যবহৃত হয়। একটি ফাংশন সাধারণত একটি বা একাধিক ইনপুট নিয়ে কাজ করে এবং একটি আউটপুট প্রদান করে। ফাংশনগুলি স্মার্ট কন্ট্রাক্টের মধ্যে পুনরাবৃত্তি এবং লজিকাল কার্য সম্পাদন করার জন্য অত্যন্ত গুরুত্বপূর্ণ।

ফাংশনের declaration এবং definition দুটি আলাদা কনসেপ্ট।


1. Function Declaration

Function declaration একটি ফাংশনের নাম, আর্গুমেন্ট, এবং রিটার্ন টাইপ ঘোষণা করে, কিন্তু এটি কার্যকর হয় না। এটি কেবল ফাংশনটির কন্ট্রাক্টে উপস্থিতি জানায়। সাধারণত, function declaration কন্ট্রাক্টে এমনভাবে ব্যবহৃত হয় যাতে বিভিন্ন ফাংশন পরস্পরের সাথে যোগাযোগ করতে পারে।

Sintaxis:

<return_type> <function_name>(<parameter1>, <parameter2>, ...) <visibility>;
  • <return_type>: ফাংশনের রিটার্ন টাইপ, যেমন uint, address, bool ইত্যাদি।
  • <function_name>: ফাংশনের নাম।
  • <parameter1>, <parameter2>: ফাংশনের ইনপুট প্যারামিটার।
  • <visibility>: ফাংশনের দৃশ্যমানতা, যেমন public, private, internal, external

উদাহরণ:

function getBalance(address _user) public view returns (uint256);

এখানে:

  • ফাংশনের নাম: getBalance
  • প্যারামিটার: _user (একটি address টাইপ)
  • রিটার্ন টাইপ: uint256
  • দৃশ্যমানতা: public (যা ব্লকচেইনে যেকোনো সত্ত্বা দ্বারা অ্যাক্সেস করা যাবে)
  • view ফাংশনটি কোনও স্টেট পরিবর্তন করে না, এটি শুধুমাত্র ডেটা পড়বে।

2. Function Definition

Function definition একটি ফাংশনের পুরো কোড এবং কার্যকারিতা সংজ্ঞায়িত করে। এটি ফাংশনের দেহ (body) প্রদান করে এবং ফাংশনটি কীভাবে কাজ করবে তা নির্দিষ্ট করে।

Sintaxis:

<return_type> <function_name>(<parameter1>, <parameter2>, ...) {
    // ফাংশনের দেহ
    // কোড যা ফাংশনটি সম্পাদন করবে
}
  • <return_type>: ফাংশনের রিটার্ন টাইপ।
  • <function_name>: ফাংশনের নাম।
  • <parameter1>, <parameter2>: ফাংশনের ইনপুট প্যারামিটার।
  • ফাংশনের দেহ: কোড যা ফাংশনের কার্য সম্পাদন করে।

উদাহরণ:

function getBalance(address _user) public view returns (uint256) {
    return balances[_user];
}

এখানে:

  • ফাংশনের নাম: getBalance
  • ইনপুট প্যারামিটার: _user (একটি address টাইপ)
  • রিটার্ন টাইপ: uint256
  • ফাংশনের দেহ: এটি balances ম্যাপিং থেকে _user ঠিকানার জন্য ব্যালান্স রিটার্ন করবে।

3. Function Visibility

ফাংশনের দৃশ্যমানতা (visibility) Solidity তে খুবই গুরুত্বপূর্ণ, কারণ এটি নির্ধারণ করে কে কোন ফাংশন অ্যাক্সেস করতে পারবে। Solidity তে ৪ ধরনের দৃশ্যমানতা রয়েছে:

  • public: এই ফাংশনটি চুক্তির বাইরে এবং ভিতরে অ্যাক্সেস করা যেতে পারে।
  • private: এই ফাংশনটি কেবলমাত্র চুক্তির ভিতরে অ্যাক্সেস করা যেতে পারে।
  • internal: এই ফাংশনটি চুক্তির ভিতরে এবং যেকোনো চুক্তি থেকে হেরিটেড (inherit) চুক্তি দ্বারা অ্যাক্সেস করা যেতে পারে।
  • external: এই ফাংশনটি শুধুমাত্র চুক্তির বাইরের অ্যাক্সেসের জন্য ব্যবহৃত হয় এবং চুক্তির ভিতরে সরাসরি কল করা যায় না।

উদাহরণ:

// public function - অ্যাক্সেস করা যাবে বাইরে থেকেও
function setBalance(address _user, uint256 _amount) public {
    balances[_user] = _amount;
}

// internal function - শুধুমাত্র চুক্তির ভিতরে অথবা inherited চুক্তির মাধ্যমে অ্যাক্সেস করা যাবে
function internalFunction() internal {
    // কাজ
}

// private function - কেবল চুক্তির ভিতরে অ্যাক্সেস করা যাবে
function privateFunction() private {
    // কাজ
}

4. Function Return Types

Solidity তে একটি ফাংশন একটি বা একাধিক মান রিটার্ন করতে পারে। আপনি ফাংশনে returns কীওয়ার্ড ব্যবহার করে রিটার্ন টাইপ নির্ধারণ করেন।

উদাহরণ:

function add(uint256 a, uint256 b) public pure returns (uint256) {
    return a + b;
}

এখানে:

  • ফাংশন add দুটি uint256 টাইপের প্যারামিটার নেয় এবং তাদের যোগফল রিটার্ন করে।

সারাংশ

Solidity তে function declaration এবং function definition দুটি গুরুত্বপূর্ণ ধারণা। Function declaration একটি ফাংশনের নাম, ইনপুট প্যারামিটার এবং রিটার্ন টাইপ ঘোষণা করে, কিন্তু তার কার্যকারিতা উল্লেখ করা হয় না। Function definition ফাংশনের কার্যকারিতা বা কোডের দেহ প্রদান করে এবং ফাংশনটি কিভাবে কাজ করবে তা নির্দিষ্ট করে। Solidity তে ফাংশনগুলোর দৃশ্যমানতা (public, private, internal, external) এবং রিটার্ন টাইপগুলি গুরুত্বপূর্ণ, কারণ এগুলি ফাংশনের অ্যাক্সেস এবং ব্যবহার কিভাবে হবে তা নির্ধারণ করে।

Content added By
Promotion

Are you sure to start over?

Loading...