Problème de compréhension d'un bout de code

Problème de compréhension d'un bout de code - Perl - Programmation

Marsh Posté le 22-04-2013 à 13:23:31    

Bonjour,
 
J'essaye de convertir un code perl (en java en l’occurrence) issu de cette page :
 
http://donjon.bin.sh/fantasy/dungeon/about/
 
Et je bloque sur une ligne (je ne connais pas du tout ce langage), ligne 515 chez moi :
 

Code :
  1. redo if ($dungeon->{'connect'}{$connect}++);


 
Bon, passons sur le redo qui n'existe pas en java il me semble (que je n'avais d'ailleurs jamais vu dans un autre langage), je l'ai remplacé par un do{}while, je pense que ça fera l'affaire.
 
C'est la condition du if que je ne sais pas trop comment interpréter. De ce que j'en comprend : $dungeon  est un objet qui contient une propriété connect qui est de type tableau associatif. Il cherche la clé $connect dans ce tableau.
 
- Si la clé n'existe pas, on continue
- Si elle existe, elle est incrémentée et le redo est exécuté.
 
Si je pouvais avoir une confirmation sur mon interprétation ou on contraire me dire si ce n'est pas ça du tout SVP.


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 22-04-2013 à 13:23:31   

Reply

Marsh Posté le 22-04-2013 à 16:32:39    

Bonjour,
 

Citation :

Bon, passons sur le redo qui n'existe pas en java il me semble (que je n'avais d'ailleurs jamais vu dans un autre langage), je l'ai remplacé par un do{}while, je pense que ça fera l'affaire.


Si c'est avec un do while, ça devrait coller. Perl a aussi des unless et until (bref des if not et while not, mais c'est plus lisible en un seul mot) :D

Citation :

C'est la condition du if que je ne sais pas trop comment interpréter. De ce que j'en comprend : $dungeon  est un objet qui contient une propriété connect qui est de type tableau associatif. Il cherche la clé $connect dans ce tableau.  
 
- Si la clé n'existe pas, on continue  
- Si elle existe, elle est incrémentée et le redo est exécuté.

C'est plutôt  
- Si la clé n'existe pas, on passe sa valeur a 1 et on continue  
- Si elle existe, elle est incrémentée et le redo est exécuté.
 
A+,

Message cité 1 fois
Message édité par gilou le 22-04-2013 à 16:38:17

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 22-04-2013 à 16:59:49    

gilou a écrit :

Bonjour,
Si c'est avec un do while, ça devrait coller. Perl a aussi des unless et until (bref des if not et while not, mais c'est plus lisible en un seul mot) :D


 
Oui j'ai eu l'occasion de croiser des unless, du coup, n'étant pas habitué, à chaque fois c'est la gymnastique dans ma tête  :pt1cable:  
 
Des fois il met aussi les instructions avant le if. Enfin bon, je pensais que ça allait être relativement pépère, mais au final sans connaitre perl y a un peu de boulot.
 

gilou a écrit :

C'est plutôt  
- Si la clé n'existe pas, on passe sa valeur a 1 et on continue  
- Si elle existe, elle est incrémentée et le redo est exécuté.
 
A+,


 
Ok je vais tester ça, merci bcp.


Message édité par x1fr le 22-04-2013 à 17:00:20

---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 22-04-2013 à 17:15:12    

Je voulais bien sur dire,  Si la clé n'existe pas dans le hash, on crée son entrée dans le hash, on passe sa valeur a 1 et on continue.
 

Citation :

à chaque fois c'est la gymnastique dans ma tête

Ça rend pourtant le code bien plus lisible une fois qu'on y est habitué.
 
 
A+,


Message édité par gilou le 22-04-2013 à 17:15:45

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed