Solidity তে ফাংশনগুলি বিভিন্ন ধরনের ইনপুট (প্যারামিটার) গ্রহণ করতে এবং আউটপুট (রিটার্ন টাইপ) প্রদান করতে পারে। ফাংশন প্যারামিটার এবং রিটার্ন টাইপ ব্যবহারের মাধ্যমে ফাংশনগুলোকে আরও কার্যকর এবং গতিশীল করা যায়। এখানে ফাংশন প্যারামিটার এবং রিটার্ন টাইপ সম্পর্কে বিস্তারিত আলোচনা করা হলো।
1. Function Parameters (ফাংশন প্যারামিটার)
ফাংশন প্যারামিটার হল ইনপুট যেগুলি একটি ফাংশনকে ডাকা হলে তা সরবরাহ করা হয়। এই প্যারামিটারগুলো ফাংশনের কাজকর্ম নির্ধারণ করে। Solidity তে প্যারামিটারগুলি সরাসরি ফাংশনের ঘোষণায় ডিফাইন করা হয় এবং তা একাধিক টাইপের হতে পারে (যেমন uint, address, string, bool, array ইত্যাদি)।
ফাংশন প্যারামিটার গঠন:
function functionName(type parameter1, type parameter2, ...) public {
// কোড
}উদাহরণ:
pragma solidity ^0.8.0;
contract MyContract {
uint256 public balance;
// প্যারামিটার সহ ফাংশন
function setBalance(uint256 _balance) public {
balance = _balance;
}
}এখানে, setBalance ফাংশনটি _balance নামক একটি প্যারামিটার গ্রহণ করে, যেটি uint256 টাইপের। ফাংশনটি _balance প্যারামিটারটি balance ভেরিয়েবলে সেট করে।
- মেমরি (memory) এবং স্টোরেজ (storage) প্যারামিটার: Solidity তে প্যারামিটার হিসেবে
memoryএবংstorageব্যবহৃত হয়, যা ডেটা কোথায় সঞ্চিত হবে তা নির্ধারণ করে। সাধারণত প্যারামিটারগুলিmemoryতে ডিফাইন করা হয়, তবেstorageপ্যারামিটার ব্যবহার করা হয় যদি অ্যারে বা স্ট্রাকচারকে দীর্ঘস্থায়ীভাবে ব্লকচেইনে সংরক্ষণ করতে হয়।
উদাহরণ:
function updateArray(uint256[] memory _arr) public {
// অ্যারে আপডেট
}এখানে, _arr একটি অ্যারে প্যারামিটার হিসেবে গৃহীত, যেটি memory তে সংরক্ষিত হবে।
2. Return Types (রিটার্ন টাইপ)
ফাংশন রিটার্ন টাইপ হল আউটপুট যা ফাংশনটি কাজ করার পর প্রদান করে। একটি ফাংশন এক বা একাধিক মান ফিরিয়ে দিতে পারে, এবং এর জন্য রিটার্ন টাইপ নির্ধারণ করা হয় ফাংশনের ঘোষণায়।
ফাংশন রিটার্ন টাইপ গঠন:
function functionName() public returns (type) {
// কোড
}ফাংশন একাধিক মান ফিরিয়ে দিতে পারে, এই ক্ষেত্রে একটি tuple (একাধিক মানের গ্রুপ) ব্যবহার করা হয়।
উদাহরণ:
pragma solidity ^0.8.0;
contract MyContract {
uint256 public balance;
// রিটার্ন টাইপ সহ ফাংশন
function getBalance() public view returns (uint256) {
return balance;
}
}এখানে, getBalance ফাংশনটি uint256 টাইপের একটি মান রিটার্ন করে, যা balance ভেরিয়েবলের মান।
- অবস্থানের দৃষ্টিকোণ (view): যদি ফাংশনটি ব্লকচেইনের স্টেট পরিবর্তন না করে, তবে তাকে
viewকিওয়ার্ড দিয়ে চিহ্নিত করা হয়। যেমন,getBalanceএকটিviewফাংশন যেহেতু এটি শুধুমাত্রbalanceএর মান পড়বে এবং কোনো পরিবর্তন করবে না। - Pure Functions: যদি ফাংশনটি ব্লকচেইনের স্টেট বা কন্ট্রাক্টের ভেরিয়েবলগুলোর সাথে কোনো ইন্টারঅ্যাকশন না করে, তবে তা
pureহিসেবে চিহ্নিত করা হয়। এই ধরনের ফাংশন কেবলমাত্র ইনপুট থেকে আউটপুট উৎপন্ন করে, কোন ব্লকচেইন স্টেটের পরিবর্তন না ঘটিয়ে।
উদাহরণ:
function addNumbers(uint256 a, uint256 b) public pure returns (uint256) {
return a + b;
}এখানে, addNumbers একটি pure ফাংশন যা দুটি uint256 প্যারামিটার নিয়ে তাদের যোগফল রিটার্ন করে।
3. Multiple Return Values (একাধিক রিটার্ন মান)
Solidity তে একটি ফাংশন একাধিক মানও রিটার্ন করতে পারে। একাধিক মান রিটার্ন করতে tuple ব্যবহার করা হয়।
উদাহরণ:
pragma solidity ^0.8.0;
contract MyContract {
uint256 public balance;
address public owner;
// একাধিক মান রিটার্ন করা
function getBalanceAndOwner() public view returns (uint256, address) {
return (balance, owner);
}
}এখানে, getBalanceAndOwner ফাংশনটি দুটি মান রিটার্ন করছে: balance (একটি uint256) এবং owner (একটি address)।
সারাংশ
Solidity তে ফাংশন প্যারামিটার এবং রিটার্ন টাইপ গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ এগুলির মাধ্যমে ফাংশনগুলোকে কার্যকরী এবং নমনীয় করা হয়। ফাংশন প্যারামিটারগুলি ইনপুট হিসেবে গ্রহণ করা হয় এবং রিটার্ন টাইপ দ্বারা আউটপুট প্রদান করা হয়। Solidity তে একাধিক মান রিটার্ন করার জন্য tuple ব্যবহার করা হয় এবং ফাংশনের কার্যকারিতা অনুযায়ী view, pure, অথবা সাধারণ রিটার্ন টাইপ ব্যবহার করা হয়।
Read more