Bağlantı kontrolü başucu kitabı

Bu belgede, bağlantı kontrollerinin kullanım yolları gösterilmektedir.

Değer örnekleri

Girişler ve çıkışlar için bağlantı kontrollerini tanımlarken genellikle bu kontrolleri türleri temsil eden öğeler olarak düşünmeniz gerekir.

Girişlerin kontrolleri, kabul ettikleri her "türü" içermeli, çıkışların kontrolleri ise tam olarak "döndürdüklerini" içermelidir.

Tek bir türü kabul etme

Bir türü "kabul eden" veya "döndüren" bir blok oluşturmak istediğiniz en temel durumda, bu türü bağlantının bağlantı kontrolüne dahil etmeniz gerekir.

Tek bir türü kabul eden bir değer bloğu

Birden fazla türü kabul etme

Birden fazla türü "kabul eden" bir blok oluşturmak için kabul edilen her türü girişin bağlantı kontrolüne eklemeniz gerekir.

Birden fazla türü kabul eden bir değer bloğu

Kural olarak, bir çıkış bazen birden fazla durumda kabul edilebiliyorsa (ör. sayıların bazen dize olarak kullanılmasına izin veriyorsanız) çıkış daha kısıtlayıcı, girişler ise daha izin verici olmalıdır. Bu kural, çıkışların desteklenmediği yerlerde bağlanmamasını sağlar.

Tüm türler

Herhangi bir türü "kabul eden" bir blok oluşturmak için girişin bağlantı kontrolünü null olarak ayarlamanız gerekir.

Herhangi bir türü kabul eden bir değer bloğu

Dönüş alt türleri

Bir alt türü "döndüren" bir blok oluşturmak için çıkışın bağlantı kontrolüne hem türü hem de süper türü eklemeniz gerekir.

Türünü ve üst türünü döndüren bir değer bloğu

Alt türler söz konusu olduğunda, blok her zaman her iki türü de "döndürdüğü" için çıkış kontrolünde birden fazla kontrol olmasında sakınca yoktur.

Parametreli türleri döndürme

Parametreli bir türü "döndüren" bir blok oluşturmak için çıkışın bağlantı kontrolüne hem parametrelenmiş sürümü hem de parametresiz sürümü eklemeniz gerekir.

Engelleme dilinizin ne kadar katı olmasını istediğinize bağlı olarak türün varyasyonlarını da ekleyebilirsiniz.

Parametreli türünü ve parametresiz türünü döndüren bir değer bloğu

Alt türlerde olduğu gibi, bu durumda da çıkış kontrolünde birden fazla kontrol olmasında sakınca yoktur. Çünkü blok her zaman her iki türü de "döndürür".

Yığın veya ifade örnekleri

Geliştiricilerin önceki ve sonraki bağlantılar için kontrolleri tanımlamasının birkaç yaygın yolu vardır. Genellikle bunları, blokların sıralamasını kısıtlayan bir şey olarak düşünürsünüz.

Sonraki bağlantılar, mevcut bloktan sonra hangi blokların gelmesi gerektiğini, önceki bağlantılar ise mevcut bloğun "ne olduğunu" içerir.

Blokları sırayla tutma

Belirli bir sırada bağlanan bir blok grubu oluşturmak için bir sonraki bağlantı kontrolünde mevcut bloğu hangi blokların takip etmesi gerektiğini ve önceki bağlantı kontrolünde mevcut bloğun "ne olduğunu" eklemeniz gerekir.

Zorunlu bir sıraya sahip ifade blokları

Çok sayıda orta blok kullanmaya izin verin

Çok sayıda orta blok içeren bir sıralı blok grubu oluşturmak için orta blokun önceki bağlantı kontrolünden en az bir girişi orta blokun sonraki bağlantı kontrolüne dahil etmeniz gerekir. Bu sayede, bloğun daha fazlası tarafından takip edilmesi sağlanır.

çok sayıda orta bloka izin veren ifade blokları

Ortadaki bloklara izin verme

Orta blokların isteğe bağlı olduğu sıralı bir blok grubu oluşturmak için ilk bloğun sonraki bağlantı kontrolünde hem orta bloğun önceki bağlantı kontrolünden hem de son bloğun önceki bağlantı kontrolünden en az bir giriş eklemeniz gerekir. Bu sayede, ilk bloğun ardından orta veya son bir blok gelebilir.

orta bloklara izin vermeyen ifade blokları

Ya da grupları

Yalnızca bir gruptaki veya başka bir gruptaki bloklarla (her iki gruptaki bloklarla değil) takip edilebilecek bir blok oluşturmak için iki şey yapmanız gerekir:

  1. İlk bloğun sonraki bağlantı kontrolünde, her iki grubun önceki bağlantı kontrollerinden en az bir giriş eklemeniz gerekir.

  2. Grupların sonraki bağlantı kontrollerini, yalnızca önceki bağlantı kontrollerinde bulunan değerleri içerecek şekilde tanımlamanız gerekir (böylece yalnızca aynı grubun blokları tarafından takip edilebilirler).

Bir tür bloktan sonra birden fazla blok veya başka bir türden birden fazla blok gelebilir ancak ikisi birden olamaz.