Java Academy · पाठ

नेस्टेड Record पैटर्न

गहराई से नेस्ट किए गए डेटा का मिलान करें

पाठ 3, कुल 4 में से13 चरण

नेस्टेड Record पैटर्न, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

नेस्टेड रिकॉर्ड पैटर्न

रिकॉर्ड पैटर्न नेस्ट किए जा सकते हैं: जो घटक स्वयं एक रिकॉर्ड हो, उसका संरचना-विघटन बाहरी पैटर्न के अंदर किया जा सकता है। इससे गहराई से संरचित डेटा का मिलान एक ही अभिव्यक्ति में हो जाता है।

एक नेस्टेड डेटा मॉडल

दो Point रिकॉर्ड से बनी एक Line पर विचार कीजिए। अंदर के रिकॉर्ड नेस्ट करने के स्वाभाविक उम्मीदवार हैं।

public class Main {
    record Point(int x, int y) {}
    record Line(Point start, Point end) {}

    public static void main(String[] args) {
        Line line = new Line(new Point(0, 0), new Point(3, 4));
        System.out.println(line);
    }
}

एक स्तर का संरचना-विघटन

एक सपाट पैटर्न दोनों Point घटकों को बाँधता है, लेकिन उन्हें पूरा का पूरा रहने देता है।

public class Main {
    record Point(int x, int y) {}
    record Line(Point start, Point end) {}

    public static void main(String[] args) {
        Object obj = new Line(new Point(0, 0), new Point(3, 4));
        if (obj instanceof Line(Point s, Point e)) {
            System.out.println(s + " -> " + e);
        }
    }
}

और गहराई में जाना

निर्देशांकों तक सीधे पहुँचने के लिए अंदर के Point s को उसके अपने रिकॉर्ड पैटर्न से बदल दीजिए: Line(Point(int x1, int y1), Point(int x2, int y2))।

public class Main {
    record Point(int x, int y) {}
    record Line(Point start, Point end) {}

    public static void main(String[] args) {
        Object obj = new Line(new Point(0, 0), new Point(3, 4));
        if (obj instanceof Line(Point(int x1, int y1), Point(int x2, int y2))) {
            double len = Math.hypot(x2 - x1, y2 - y1);
            System.out.println("Length: " + len);
        }
    }
}

किसी भी गहराई तक

नेस्टिंग आपके डेटा जितनी गहरी हो सकती है। हर स्तर या तो पूरे घटक को बाँधता है या आगे उसका संरचना-विघटन करता है, जिससे संरचना का आकार ठीक-ठीक प्रतिबिंबित होता है।

public class Main {
    record Point(int x, int y) {}
    record Line(Point start, Point end) {}
    record Drawing(Line first, String label) {}

    public static void main(String[] args) {
        Object obj = new Drawing(new Line(new Point(1, 2), new Point(3, 4)), "diag");
        if (obj instanceof Drawing(Line(Point(var ax, var ay), var end), var label)) {
            System.out.println(label + " starts at " + ax + "," + ay);
            System.out.println("ends near " + end);
        }
    }
}

var और प्रकारों का मिश्रण

नेस्टेड पैटर्न के भीतर आप स्पष्ट प्रकारों और var को स्वतंत्र रूप से मिला सकते हैं। जिन घटकों को आप केवल आगे भेजते हैं, उनके लिए var और जहाँ स्पष्टता उपयोगी हो, वहाँ स्पष्ट प्रकारों का उपयोग कीजिए।

स्विच में नेस्टिंग

नेस्टेड पैटर्न स्विच में विशेष रूप से अभिव्यंजक होते हैं और हर केस को डेटा की सटीक आकृति बताने देते हैं।

public class Main {
    record Point(int x, int y) {}
    record Line(Point start, Point end) {}

    static String describe(Object o) {
        return switch (o) {
            case Line(Point(var x1, var y1), Point(var x2, var y2)) when x1 == x2 -> "vertical";
            case Line(Point p1, Point p2) -> "general line";
            default -> "not a line";
        };
    }

    public static void main(String[] args) {
        System.out.println(describe(new Line(new Point(2, 0), new Point(2, 9))));
        System.out.println(describe(new Line(new Point(0, 0), new Point(5, 5))));
    }
}

पूरा मिलान सफल होना चाहिए

नेस्टेड पैटर्न तभी मिलता है जब हर स्तर का मिलान हो। यदि कोई घटक अपने उप-पैटर्न की अपेक्षा से अलग प्रकार का हो, तो पूरा मिलान विफल हो जाता है और कोई चर बाँधा नहीं जाता।

पठनीयता का संतुलन

गहरी नेस्टिंग शक्तिशाली होती है, लेकिन उसे पढ़ना कठिन हो सकता है। यदि पैटर्न बहुत बड़ा हो जाए, तो एक स्तर का संरचना-विघटन करके बाकी काम अलग तर्क से करने पर विचार कीजिए।

नेस्टेड बाइंडिंग पर गार्ड

नेस्टेड पैटर्न अंदर के मानों को स्थानीय चरों के रूप में उपलब्ध कराते हैं, इसलिए एक ही when गार्ड कई स्तरों के फ़ील्ड का संदर्भ दे सकता है।

public class Main {
    record Point(int x, int y) {}
    record Line(Point start, Point end) {}

    static boolean isUnitStep(Object o) {
        return o instanceof Line(Point(int x1, int y1), Point(int x2, int y2))
            && x2 - x1 == 1 && y2 - y1 == 1;
    }

    public static void main(String[] args) {
        System.out.println(isUnitStep(new Line(new Point(0, 0), new Point(1, 1))));
        System.out.println(isUnitStep(new Line(new Point(0, 0), new Point(2, 2))));
    }
}

एक संपूर्ण उदाहरण

दोनों सिरों का संरचना-विघटन करके किसी रेखा का मध्यबिंदु निकालिए।

public class Main {
    record Point(int x, int y) {}
    record Line(Point start, Point end) {}

    static Point midpoint(Object o) {
        if (o instanceof Line(Point(int x1, int y1), Point(int x2, int y2))) {
            return new Point((x1 + x2) / 2, (y1 + y2) / 2);
        }
        return null;
    }

    public static void main(String[] args) {
        System.out.println(midpoint(new Line(new Point(0, 0), new Point(4, 6))));
    }
}

त्वरित जाँच

नेस्टेड रिकॉर्ड पैटर्न की अपनी समझ जाँचिए।

पुनरावृत्ति

आपने नेस्टेड रिकॉर्ड पैटर्न सीखे।

  • जो रिकॉर्ड घटक स्वयं एक रिकॉर्ड हो, उसका संरचना-विघटन उसी पैटर्न में किया जा सकता है।
  • नेस्टिंग किसी भी गहराई तक जा सकती है और स्पष्ट प्रकारों को var के साथ मिला सकती है।
  • मिलान तभी सफल होता है जब हर स्तर का मिलान हो।
  • अंदर की बाइंडिंग गार्ड और मुख्य भाग, दोनों में उपयोग की जा सकती हैं।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Java सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
104
पाठ
374

अक्सर पूछे जाने वाले प्रश्न

क्या “नेस्टेड Record पैटर्न” पाठ निःशुल्क है?

हाँ—“नेस्टेड Record पैटर्न” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“नेस्टेड Record पैटर्न” में मैं क्या सीखूँगा?

गहराई से नेस्ट किए गए डेटा का मिलान करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“नेस्टेड Record पैटर्न” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. instanceof के लिए पैटर्न मिलान
  2. Record पैटर्न
  3. नेस्टेड Record पैटर्न
  4. switch में पैटर्न
← Java Academy पर वापस जाएँ