Generic Functions এবং Classes in Dart
Generics Dart-এ একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে টাইপ নিরাপত্তা বজায় রেখে কোডকে পুনঃব্যবহারযোগ্য এবং আরও নমনীয় করতে দেয়। জেনেরিক ফাংশন এবং ক্লাসগুলি আপনাকে একটি নির্দিষ্ট ডেটা টাইপের পরিবর্তে একটি টাইপ প্যারামিটার ব্যবহার করতে দেয়, যা বিভিন্ন ডেটা টাইপের সাথে কাজ করতে সক্ষম।
১. Generic Functions (জেনেরিক ফাংশন)
Generic Functions হল এমন ফাংশন যা টাইপ প্যারামিটার গ্রহণ করে এবং বিভিন্ন ধরনের ইনপুট নিয়ে কাজ করতে পারে। এটি একই ফাংশনালিটি বিভিন্ন টাইপের জন্য প্রয়োগ করতে সাহায্য করে।
Generic Function এর উদাহরণ:
// Generic function to find the maximum of two values
T findMax<T extends Comparable>(T a, T b) {
return a.compareTo(b) > 0 ? a : b;
}
void main() {
print(findMax<int>(10, 20)); // Output: 20
print(findMax<double>(10.5, 20.5)); // Output: 20.5
print(findMax<String>('apple', 'banana')); // Output: banana
}
২. Generic Classes (জেনেরিক ক্লাস)
Generic Classes হল ক্লাস যা একটি বা একাধিক টাইপ প্যারামিটার গ্রহণ করে। এটি বিভিন্ন ডেটা টাইপের সাথে কাজ করতে সক্ষম, এবং এতে ডেটা নিরাপত্তা বজায় থাকে।
Generic Class এর উদাহরণ:
// Generic class
class Box<T> {
T item;
Box(this.item);
T getItem() {
return item;
}
}
void main() {
// Using the Box class with different data types
Box<int> intBox = Box<int>(10);
print(intBox.getItem()); // Output: 10
Box<String> strBox = Box<String>('Hello');
print(strBox.getItem()); // Output: Hello
Box<double> doubleBox = Box<double>(15.5);
print(doubleBox.getItem()); // Output: 15.5
}
৩. Constraints with Generics (জেনেরিকসের কনস্ট্রেইন্টস)
আপনি জেনেরিক প্যারামিটারগুলির জন্য কনস্ট্রেইন্টও নির্ধারণ করতে পারেন, যাতে শুধুমাত্র নির্দিষ্ট টাইপগুলি ব্যবহৃত হয়।
Constraints এর উদাহরণ:
class Container<T extends num> {
T value;
Container(this.value);
T getValue() {
return value;
}
}
void main() {
Container<int> intContainer = Container<int>(100);
print(intContainer.getValue()); // Output: 100
Container<double> doubleContainer = Container<double>(20.5);
print(doubleContainer.getValue()); // Output: 20.5
// Container<String> strContainer = Container<String>('Hello'); // This will give an error
}
৪. Using Generic Functions with Collections
জেনেরিক ফাংশনগুলি সাধারণত কালেকশনগুলির সাথে কাজ করার জন্য ব্যবহার করা হয়।
উদাহরণ:
// Function to print elements of a List
void printList<T>(List<T> items) {
for (var item in items) {
print(item);
}
}
void main() {
List<String> colors = ['Red', 'Green', 'Blue'];
printList(colors); // Output: Red, Green, Blue
List<int> numbers = [10, 20, 30];
printList(numbers); // Output: 10, 20, 30
}
উপসংহার
Generic Functions এবং Generic Classes Dart-এ কোডের পুনঃব্যবহারযোগ্যতা এবং টাইপ নিরাপত্তা বাড়াতে সাহায্য করে। জেনেরিক্স ব্যবহার করে আপনি বিভিন্ন টাইপের ডেটার সাথে কাজ করতে পারবেন এবং একই সময়ে আপনার কোডকে পরিষ্কার এবং সহজে পরিচালনাযোগ্য রাখবেন। এটি ডেভেলপারদের জন্য একটি গুরুত্বপূর্ণ টুল, বিশেষ করে বড় এবং জটিল প্রকল্পগুলিতে।
Read more