Blady
unread,May 7, 2013, 6:34:42 AM5/7/13You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Bonjour,
la structure case en Ada impose d'avoir des constantes ou expressions
statiques comme choix, pas de souci � ce sujet.
Par contre, pour simplifier l'�criture je souhaite factoriser les
expressions par une fonction. L� patatras, m�me si ma fonction reprends
exactement mon expression statique avec un argument statique, le
compilateur n'en veut pas, comme dans l'exemple suivant:
1. procedure Essai02 is
2.
3. type Mon_enum1 is (A, B, C, D);
4.
5. type Mon_enum2 is (AA, BB, CC, DD);
6.
7. function T (V : Mon_enum2) return Mon_enum1 is
8. begin
9. return Mon_enum1'Val (Mon_enum2'Pos (V));
10. end T;
11.
12. V1 : Mon_enum1;
13. V2 : Float;
14.
15. begin
16. case V1 is
|
>>> missing case value: "C"
17. when A =>
18. V2 := 3.1;
19. when Mon_enum1'Val (Mon_enum2'Pos (BB)) =>
20. V2 := 3.2;
21. when T(CC) =>
|
>>> choice given in case statement is not static
>>> non-static function call (RM 4.9(6,18))
22. V2 := 3.3;
23. when D =>
24. V2 := 3.4;
25. end case;
26. end Essai02;
Ligne 19 c'est ok, ligne 21 �a coince.
Y aurait-il un moyen de d�clarer la fonction T "statique" ?
C'est � dire sans effet de bord, sans param�tre "out"...
Dans ce dernier cas le compilateur pourrait tr�s bien pr�-calculer les
choix.
Merci pour vos r�ponses, Pascal.