Karena penasaran, apakah ada bahasa yang memungkinkan Anda melakukan set aritmatika pada jenis untuk membuat jenis baru? Sesuatu seperti:
interface A {
void a();
void b();
}
interface B {
void b();
void c();
}
interface C = A & B; // has b()
interface D = A | B; // has a(), b() and c()
interface E = (A & B) ^ B; // has c()
Saya tahu bahwa dalam beberapa bahasa ide-ide ini dapat diekspresikan (yaitu, Java memiliki List<Comparable & Serializable>
untuk penyatuan antarmuka) tetapi saya belum pernah mendengar bahasa yang mendukung tipe aritmatika. Terima kasih!
CanWriteAndCompare extends Serializable, Comparable {}
) dan saya sedang memikirkan cara menggeneralisasi ini.
A
atau dua B
, dengan dua implementasi yang terlihat persis sama. Dalam metode ini saya memanggil metode polimorfik yang dapat mengambil A
atau B
, jadi implementasinya sama, tetapi karena saya harus mengambil dua tipe yang berbeda, saya perlu dua implementasi. Ini akan lebih mudah jika saya bisa melakukannya myMethod(A | B aOrB)
.
Or
operasi dapat ditiru oleh banyak pewarisan.