Extension Methods এবং তার প্রয়োগ
Extension Methods হল Dart-এ একটি শক্তিশালী বৈশিষ্ট্য যা বিদ্যমান ক্লাসের কার্যকারিতা প্রসারিত করার জন্য ব্যবহৃত হয়। এটি এমন নতুন মেথড বা প্রোপার্টি যোগ করতে দেয় যা মূল ক্লাসের অংশ নয়। এক্সটেনশন মেথডগুলি কোডের পুনঃব্যবহার এবং কার্যকারিতা বাড়ানোর জন্য অত্যন্ত কার্যকর।
Extension Methods কীভাবে কাজ করে
এক্সটেনশন মেথড তৈরি করতে, আপনাকে একটি extension কিওয়ার্ড ব্যবহার করতে হবে এবং সেই ক্লাসের জন্য একটি নতুন মেথড বা প্রোপার্টি ঘোষণা করতে হবে। এটি মূল ক্লাসের উপর কার্যকর হয়, এবং আপনি মূল ক্লাসের মতো করে এক্সটেনশন মেথডগুলিকে কল করতে পারেন।
উদাহরণ
নিচে একটি উদাহরণ দেওয়া হলো যেখানে String ক্লাসের জন্য একটি এক্সটেনশন মেথড যোগ করা হয়েছে।
// String ক্লাসের জন্য এক্সটেনশন
extension StringExtensions on String {
// একটি মেথড যোগ করা হয়েছে যা স্ট্রিংটি বিপরীত করে
String get reverse {
return this.split('').reversed.join('');
}
// একটি মেথড যোগ করা হয়েছে যা স্ট্রিংটি প্যালিনড্রোম কিনা পরীক্ষা করে
bool get isPalindrome {
return this == reverse;
}
}
void main() {
String text = "level";
// এক্সটেনশন মেথড ব্যবহার
print(text.reverse); // Output: level
print(text.isPalindrome); // Output: true
String text2 = "hello";
print(text2.reverse); // Output: olleh
print(text2.isPalindrome); // Output: false
}
Extension Methods-এর সুবিধা
কোডের পরিষ্কারতা:
- এক্সটেনশন মেথডগুলির মাধ্যমে কোডের দৃশ্যমানতা বাড়ে এবং ব্যবহারের ক্ষেত্রে অস্পষ্টতা কমে।
বিদ্যমান ক্লাসের উপর নতুন কার্যকারিতা:
- ক্লাসের অরিজিনাল কোড পরিবর্তন না করেই নতুন মেথড বা প্রোপার্টি যোগ করা যায়।
বড় প্রকল্পে ব্যবহার:
- বড় এবং জটিল প্রকল্পগুলিতে কোডের সংগঠন এবং পুনঃব্যবহার আরও সহজ হয়।
এক্সটেনশন মেথডের ব্যবহারিক প্রয়োগ
উদাহরণ ১: তালিকা (List) ক্লাসের জন্য এক্সটেনশন
extension ListExtensions on List<int> {
// একটি মেথড যোগ করা হয়েছে যা তালিকার সমস্ত উপাদানের যোগফল প্রদান করে
int get sum {
return this.reduce((value, element) => value + element);
}
}
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
// এক্সটেনশন মেথড ব্যবহার
print(numbers.sum); // Output: 15
}
উদাহরণ ২: এক্সটেনশন মেথডের উপর ভিত্তি করে ফিল্টার করা
extension ListStringExtensions on List<String> {
// একটি মেথড যোগ করা হয়েছে যা তালিকায় নির্দিষ্ট অক্ষরের শুরু হওয়া উপাদানগুলি ফিল্টার করে
List<String> filterStartsWith(String prefix) {
return this.where((element) => element.startsWith(prefix)).toList();
}
}
void main() {
List<String> words = ['apple', 'banana', 'apricot', 'blueberry'];
// এক্সটেনশন মেথড ব্যবহার
print(words.filterStartsWith('a')); // Output: [apple, apricot]
}
উপসংহার
এক্সটেনশন মেথডগুলি Dart-এ একটি শক্তিশালী বৈশিষ্ট্য যা বিদ্যমান ক্লাসগুলির কার্যকারিতা প্রসারিত করে এবং কোড পুনঃব্যবহারের সুযোগ সৃষ্টি করে। এটি উন্নত কোড লেখার অভ্যাস তৈরি করতে সাহায্য করে, বিশেষ করে বড় প্রকল্পগুলিতে। এক্সটেনশন মেথডগুলি ব্যবহার করে আপনি আপনার কোডের সংগঠন এবং কার্যকারিতা উন্নত করতে পারেন।
Read more