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.
A
ou un B
, avec deux implémentations qui se ressemblent exactement. Dans la méthode, j'appelle une méthode polymorphe qui peut prendre un A
ou 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)
.
Or
opération peut être émulée par héritage multiple.