Par curiosité, existe-t-il des langages qui vous permettent de définir l'arithmétique sur les types pour en créer de nouveaux? Quelque chose comme:
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()
Je sais que dans certaines langues, ces idées peuvent être exprimées (c'est-à-dire que Java a List<Comparable & Serializable>pour l'union des interfaces) mais je n'ai jamais entendu parler d'un langage qui prend en charge le type arithmétique. Merci!
CanWriteAndCompare extends Serializable, Comparable {}) et je réfléchissais à la façon de généraliser cela.
Aou un B, avec deux implémentations qui se ressemblent exactement. Dans la méthode, j'appelle une méthode polymorphe qui peut prendre un Aou un B, donc les implémentations sont les mêmes, mais comme je dois prendre deux types distincts, j'ai besoin de deux implémentations. Ce serait plus facile si je pouvais le faire myMethod(A | B aOrB).
Oropération peut être émulée par héritage multiple.