- Covariance and contravariance (computer science)
- Many programming language type systems support subtyping. For instance, if the type Cat is a subtype of Animal, then an expression of type Cat should be substitutable wherever an expression of type Animal is used.
Isi ini akan Anda temui jika Anda seorang pengembang kompiler, atau jika Anda menggunakan API kompiler, atau jika Anda terlalu sering menggunakan sistem tipe kompiler.
Ini adalah hal yang wajar Anda temui.
Hal ini secara alami akan Anda temui jika Anda sering menggunakan sistem tipe kompiler.
Dan secara alami hal ini telah menyatu dalam kehidupan pengkodean kita.
Secara singkat, jika ada dua tipe, Animal dan Dog,
Jika Dog dapat ditugaskan ke Animal, itu disebut kovariandan
Sebaliknyajika Animal ditugaskan ke Dog, itu disebut kontravarian.
Secara umum, Animal tidak dapat ditugaskan ke Dog.
Karena menurut pandangan orang awam, hal itu tidak masuk akal,
maka pengembang kompiler mempertimbangkan hal ini dan hanya memasukkan kontravarian pada beberapa bagian.
Biasanya, kontravarian diterapkan pada nilai input fungsi, sementara kovarian dipertahankan untuk nilai output.
Mengapa kontravarian diperlukan?Anda mungkin bertanya-tanya.
Ini membantu dalam menangani event dan hal-hal serupa, memungkinkan pekerjaan yang lebih fleksibel dan polimorfik.
Sebaliknya, kovarian dapat menyebabkan masalah.
Dalam kode di atas, Animal ditempatkan di tempat Dog untuk memastikan fleksibilitas dan memperhatikan polimorfisme.
Sebaliknya, jika subtipe Dog seperti Chihuahua digunakan, maka akan terjadi error saat menjalankan event handler karena Dog tidak memiliki interface khusus Chihuahua.
Sebaliknya, karena tipe yang digunakan saat menjalankan fungsi adalah Animal, maka subtipe Animal akan dimasukkan secara otomatis,
sehingga mungkin terlihat seperti Dog ditugaskan ke Animal.
Oleh karena itu, kontravarian biasanya digunakan untuk nilai input.
Invarians, Invarians
Singkatnya, invarians adalah gabungan dari kovarian dan kontravarian, sedangkan invarians bukanlah keduanya.
Kesimpulan
Karena isi ini sederhana sekaligus kompleks,
akan lebih baik jika Anda membacanya sendiri.
Komentar0