sinf Oʻrnatish {
ega ( qiymat : raqam ) : mantiqiy {
// ...
}
qo'shish ( qiymat : raqam ) : bu {
// ...
}
}
Endi siz MutableSet dan qo'shishni bekor qilishni o'chirib tashlashingiz mumkin , chunki bu Set -da Set misoliga ishora qiladi va MutableSet -da bu MutableSet misoliga ishora qiladi :
sinf Mutable Set uzaytiradi { o'chirish ( qiymat : raqam ) ni o'rnating : mantiqiy {
// ...
}
}
109-sahifadagi “Yarauvchi namunasi” da bo‘lgani kabi zanjirlangan API bilan ishlash uchun juda qulay xususiyatdir .
Sinflardan foydalanganda siz ko'pincha ularni interfeyslar bilan ishlatayotganingizni topasiz . Turlarning taxalluslari singari, interfeyslar ham turga nom berish usulidir, shuning uchun uni satrda belgilashingiz shart emas. Turi taxalluslari va interfeyslari asosan bir xil narsa uchun ikkita sintaksisdir (masalan, funksiya ifodalari va funksiya deklaratsiyasi), lekin bir nechta kichik farqlar mavjud. Keling, ularning umumiy jihatlaridan boshlaylik. Quyidagi turdagi taxallusni ko'rib chiqing:
turi Sushi = { kaloriya : raqam sho'r : boolean mazali : mantiqiy }
Uni interfeys sifatida qayta yozish oson:
interfeys Sushi { kalori : raqam sho'r : boolean mazali : mantiqiy }
Sushi turidagi taxallusni ishlatgan hamma joyda siz Sushi interfeysidan ham foydalanishingiz mumkin . Ikkala deklaratsiya ham shakllarni belgilaydi va bu shakllar bir-biriga tayinlanishi mumkin (aslida ular bir xil!).
Turlarni birlashtirishni boshlaganingizda, narsalar yanada qiziqarli bo'ladi. Keling, Sushidan tashqari yana bir taomni modellashtiraylik :
turi Kek = { kaloriya : raqam shirin : mantiqiy mazali : mantiqiy }
Ko'p ovqatlar kaloriyali va mazali bo'ladi - nafaqat sushi va kek . Keling, oziq-ovqat mahsulotlarini o'z turiga ajratamiz va oziq-ovqatlarimizni shu nuqtai nazardan qayta belgilaymiz:
Do'stlaringiz bilan baham: |