Pour l'exemple du switch (III-A), je suppose qu'il y a des problèmes de concurrence si la variable est déclarée shared? Mais dans la déclaration je ne vois pas shared. Peux-tu expliquer?
Pourquoi n'est-il pas possible d'étendre un type déclaré avec le mot-clef alias, il semble que ce serait utile?
Je n'ai pas compris ce passage:
L'inférence de type dans Ceylon consiste simplement à omettre le type, d'une référence ou de retour d'une fonction, si :
* celle-ci (la référence ou la fonction) n'est pas exposée, le langage suppose que cela fait alors partie d'une API
Pour moi, la référence ou fonction fait partie d'une API si elle est exposée, donc tout a fait le contraire de ce qui est écrit.
Dans ce code:
1 2
| class GeneriqueTypeOptionnel<PremierType=String>() {}
GeneriqueTypeOptionnel generiqueTypeOptionnel = GeneriqueTypeOptionnel<String>(); |
Est-ce que GeneriqueTypeOptionnel tout seul est automatiquement remplacé par GeneriqueTypeOptionnel<String>? Si c'est le cas on ne peut pas faire:
GeneriqueTypeOptionnel generiqueTypeOptionnel = GeneriqueTypeOptionnel<BougliBougla>();
N'est-ce pas?
Il semble que "object" déclare un singleton, c'est bien ça?
Dans IV-C, il est dit que hériter de la même interface avec des paramètres génériques differents n'est possible que "si, et seulement si le type est covariant"
mais c'est suivi d'un exemple avec des types contravariants, j'ai du mal à suivre:
class ConsommateurAetB() satisfies ConsommateurA & ConsommateurB
Que signifient + et * dans ces déclarations?
1 2
| {Object+} liste
{Noeud*} noeuds |
J'ai remarqué des fautes d'orthographe dans l'article, par exemple "qu'elle est le type exact"...
Dans la section III-A, je suppose que variableUnion réfère à demoUnion déclaré au-dessus?
Partager