Page 1 sur 1

[i6] Manipulations de variables en Inform 6

MessagePosté: Sam Juin 30, 2018 7:35 am
par auraes
Le rédacteur de l'article Manipulations de variables en Inform 6, sur fiction-interactive.fr, semble avoir une mauvaise compréhension de ce que sont des variables globales et locales.
Une variable dans un objet en I6 est bien une variable globale et non locale :
Code: Tout sélectionner
Object obj
   with a 1; !ou "private a 1" pour en restreindre l'accès au seul objet

Global b = 2;

[ rtn;
   obj.a = -1;
   b = -2;
];

[ main c;
   c = 3;
   print obj.a, " ", b, " ", c;
   new_line;
   rtn();
   print obj.a, " ", b, " ", c;
   new_line;
];
a est une variable globale (appelée propriété dans un objet I6), modifiable, rémanente et accessible de n'importe quelle fonction. Pour en restreindre l'accès au seul objet qui l'a déclaré, il faut la déclarer private.
b est une variable globale modifiable, rémanente et accessible de n'importe quelle fonction.
c est une variable locale modifiable, non rémanente et accessible seulement à l’intérieur de la fonction main.

DM4 :
Properties are just like global variables: any value you can store in a variable
can be stored in a property.
A ‘‘global variable’’ is permanent and its value can be used or altered from every routine.
A private property is so well hidden that nobody else
can even know whether or not it exists.

Du coup, l'article est faux et prête à confusion.