0Pricing
Java Academy · Ders

İç İçe Record Örüntüleri

Derin iç içe verileri eşleştirin

İç İçe Record Örüntüleri, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.

İç İçe Kayıt Kalıpları

Kayıt kalıpları iç içe kullanılabilir: kendisi de kayıt olan bir bileşen, dış kalıbın içinde bileşenlerine ayrılabilir. Böylece derin yapılı verileri tek bir ifadede eşleyebilirsiniz.

İç İçe Bir Veri Modeli

İki Point kaydından oluşan bir Line düşünün. İçteki kayıtlar, iç içe kullanım için doğal adaylardır.

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);
    }
}

Tek Düzeyde Bileşenlerine Ayırma

Düz bir kalıp, iki Point bileşenini bağlar ancak onları bütün olarak bırakır.

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);
        }
    }
}

Daha Derine İnme

Koordinatlara doğrudan ulaşmak için içteki Point s ifadesini kendi kayıt kalıbıyla değiştirin: 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);
        }
    }
}

Her Derinlikte

İç içe kullanım, verinizin derinliği kadar ilerleyebilir. Her düzey ya bütün bir bileşeni bağlar ya da onu daha ayrıntılı biçimde bileşenlerine ayırır; böylece yapının şeklini tam olarak yansıtır.

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 ve Türleri Birlikte Kullanma

İç içe bir kalıp içinde açıkça belirtilen türleri ve var ifadesini serbestçe karıştırabilirsiniz. Yalnızca aktardığınız bileşenlerde var, açıklığın önemli olduğu yerlerde ise açık türleri kullanın.

Seçim Deyiminde İç İçe Kullanım

İç içe kalıplar, seçim deyiminde özellikle anlatım gücü sağlar; her dalın kesin bir veri şeklini tanımlamasına olanak verir.

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))));
    }
}

Eşleşmenin Tamamı Sağlanmalı

İç içe bir kalıp yalnızca her düzey eşleştiğinde eşleşir. Herhangi bir bileşenin türü, alt kalıbın beklediği türden farklıysa genel eşleşme başarısız olur ve hiçbir değişken bağlanmaz.

Okunabilirlik Dengesi

Derin iç içe kullanım güçlüdür ancak okunması zorlaşabilir. Bir kalıp çok büyürse bir düzeyde bileşenlerine ayırmayı ve geri kalanını ayrı bir mantıkla işlemeyi düşünün.

İç İçe Bağlamalar Üzerinde Koruma Koşulları

İç içe kalıplar, iç değerleri yerel değişkenler olarak kullanıma açtığı için tek bir when koruma koşulu aynı anda birkaç düzeydeki alanlara başvurabilir.

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))));
    }
}

Eksiksiz Bir Örnek

Her iki uç noktayı da bileşenlerine ayırarak bir doğrunun orta noktasını hesaplayın.

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))));
    }
}

Kısa Sınama

İç içe kayıt kalıplarını anlayıp anlamadığınızı sınayın.

Özet

İç içe kayıt kalıplarını öğrendiniz.

  • Kendisi de kayıt olan bir kayıt bileşeni satır içinde bileşenlerine ayrılabilir.
  • İç içe kullanım her derinlikte sürdürülebilir ve açık türlerle var birlikte kullanılabilir.
  • Eşleşme yalnızca her düzey eşleştiğinde başarılı olur.
  • İç bağlamalar hem koruma koşullarında hem de gövdede kullanılabilir.

Sıkça Sorulan Sorular

“İç İçe Record Örüntüleri” dersi ücretsiz mi?

Evet — “İç İçe Record Örüntüleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.

“İç İçe Record Örüntüleri” dersinde ne öğreneceğim?

Derin iç içe verileri eşleştirin Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“İç İçe Record Örüntüleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. instanceof için Örüntü Eşleme
  2. Record Örüntüleri
  3. İç İçe Record Örüntüleri
  4. switch İçinde Örüntüler
← Java Academy Sayfasına Dön