Page 1 sur 1

Portée des identifieurs

MessagePosté: Mar Juin 21, 2016 2:32 pm
par tvisarl
Bonjour,

La portée ( scope ) ou la validité dans l'espace et le temps des identifieurs est manifestement un problème majeur dans Inform 7, comme partout d'ailleurs.
Où pourrais-je trouver sa définition et les règles correspondantes ?

Merci d'avance,

Thierry

Re: Portée des identifieurs

MessagePosté: Mar Juin 21, 2016 3:28 pm
par Otto Grimwald
À part dans le manuel, je ne vois pas trop : http://inform7.com/learn/man/WI_18_29.html

Tu peux rajouter un objet nommé "bidule" dans le "scope" avec la commande : "place the bidule in scope; "

C'est quoi que tu appelles identifieurs ? Les objets ?

Re: Portée des identifieurs

MessagePosté: Sam Juin 25, 2016 6:04 pm
par tvisarl
Merci. Je n'ai pas été assez explicite. Je voulais savoir si on peut mettre deux exemplaires du même objet dans deux endroits différents et que Inform les distingue à partir de l'endroit où ils sont.
Par exemple, que le couteau porté par le gladiateur et celui resté dans les vestiaires ( par ailleurs absolument identiques ) soient reconnus comme distincts et comment. Dans un langage de programmation classique cela ne poserait aucun problème.
On dirait simplement "gladiateur.couteau" et "vestiaire.couteau", et basta :)

Re: Portée des identifieurs

MessagePosté: Sam Juin 25, 2016 7:00 pm
par Natrium
Il faut qu'ils soient distincts dans le code ? Dans ce cas, il ne sont pas vraiment identiques…

Pour qu'ils soient identiques, j'imagine qu'il faudra créer un type.
Code: Tout sélectionner
A couteau is a kind of thing.

Et pour en avoir deux.
Code: Tout sélectionner
Le gladiateur porte le couteau du gladiateur. Le couteau du gladiateur est un couteau.
Le couteau du vestiaire est dans le vestiaire. Le couteau du vestiaire est un couteau.

Comme ça tu peux les nommer par « couteau du gladiateur » ou « couteau du vestiaire », ou même juste « couteau » (dans ce cas, Inform va choisir le couteau le plus proche dans la source, c'est-à-dire sous le même titre). Mais si tu as peur des conflits, tu peux mettre des traits d'union.

Je ne pense pas qu'il y ait un moyen facile de différencier les couteaux autrement qu'en leur donnant des noms différents dans le code. On peut aussi faire comme ça, si on les veut vraiment identiques, et que ce soit le fait qu'il en porte un qui compte :
Code: Tout sélectionner
si le gladiateur porte un couteau (called C):
    maintenant le joueur porte C.

Re: Portée des identifieurs

MessagePosté: Dim Juin 26, 2016 3:37 pm
par tvisarl
Maintenant je pense que j'y suis, merci :D