Vivasoft-logo

১০.৭ জেনেরিকের কিছু বাস্তব জীবনের উদাহরণ

আপনি প্রতিদিন-ই জেনেরিক্স এর ব্যবহার দেখেন, এমন কি এটি ব্যবহার-ও করেন – নিজের অজান্তে। উদাহরণস্বরূপ, ব্যাপকভাবে ব্যবহৃত List ডেটা টাইপ যেকোনো ধরনের ডেটা গ্রহণ করে। যখন আমরা Listলিখি, আমরা আসলে স্ট্রিং টাইপ ডেটার একটি তালিকা তৈরি করি। একইভাবে, যদি আমরা Listলিখি, আমরা int-এর একটি তালিকা তৈরি করছি। মূলত, লিস্ট ক্লাস জেনেরিক টাইপ নিচ্ছে যার জন্য তালিকা তৈরি করা হবে।

এখন একটি ন্যূনতম স্ট্যাক ক্লাস তৈরি করা যাক যা যেকোনো ধরনের ডেটা গ্রহণ করতে পারে। এটি একটি LIFO (Last In First Out) টাইপ ডেটা স্ট্রাকচার। কল্পনা করার জন্য, একে অপরের উপরে স্তুপীকৃত কিছু প্লেটের কথা ভাবুন। স্ট্যাকের উপর রাখা শেষ প্লেটটি প্রথমে বেরিয়ে আসবে।

class MyStack {
    final List _items = [];
    
    void push(T item) {
        _items.add(item);
    }
    
    T pop() {
        if (_items.isEmpty) {
            throw StateError('Cannot pop from an empty stack');
        }
        return _items.removeLast();
    }
    
    T peek() {
        if (_items.isEmpty) {
            throw StateError('Cannot peek into an empty stack');
        }
        return _items.last;
    }
    
    bool isEmpty() => _items.isEmpty;
    
    int size() => _items.length;
}
 

এটি একটি ন্যূনতম স্ট্যাক ক্লাস।

এখন, আমরা এটি নিম্নরূপ ভাবে ব্যবহার করতে পারি:

// Example usage of the generic stack
MyStack stringStack = MyStack();

stringStack.push("Dart");
stringStack.push("is");
stringStack.push("fun");

// Output: Peek: fun
print("Peek: ${stringStack.peek()}");
// Output: Size: 3
print("Size: ${stringStack.size()}");

// Output (without new lines):
// fun
// is
// Dart
while (!stringStack.isEmpty()) {
    print(stringStack.pop());
}