On Wed, 07 Dec 2005 23:45:31 +0100, extense wrote:
Tout ca est bien gentil, je suis content de savoir qu'il existe il multitude de façon de faire, mais j'aimerais bien qu'on m'en indique juste "cool" une pour faire ca :
J'aimerai posséder un tableau unique pour contenir des choses diverses sans avoir a gerer autant de tableau que de type d'élément.
Justement, en perl c'est facile alors qu'en C ça l'est beaucoup moins... Un tableau peut contenir des scalaires (nombres, chaines...) ou des références, et celles-ci peuvent être des références vers des scalaires, des tableaux, des hashes, des fonctions... Et chaque élément peut être différent (même si ce n'est pas forcément évident à gérer si on n'a pas un moyen de savoir à quel type d'élément on a affaire).
Mon exemple était tres simple, j'ai des points 3D a stocker.
my @tableau = ( [1,2,3], [4,5,6], [0,0,0], );
Et on y accède comme ça:
$tableau[$index][$coord]
Donc si on a ($x,$y,$z)=(0,1,2) alors
$tableau[$index][$x] fera ce qu'on pense que ça fait.
On peut aussi faire:
my @tableau = ( { x => 1, y => 2, z => 3 }, { x => 4, y => 5, z => 6 }, { x => 0, y => 0, z => 0 }, );
Et on y accède comme ça:
$tableau[$index]{x}
On peut aussi faire des choses amusantes genre:
my @tableau = map { { x => $_->[0], y => $_->[1], z => $_->[2] } } ( [1,2,3], [4,5,6], [0,0,0], );
Et on y accède encore par $tableau[$index]{x}
Comme précisé plus haut, en perl on peut très bien faire:
my @tableau = ( { type => 'point3d', x=> 0, y=> 2, z=> 42 }, { type => 'ligne2d', x1 => 0, y1 => 12, x2=> 47, y2 => 79}, { type => 'rien' }, { type => 'texte', valeur => 'toto' }, );
Bref, on peut faire ce qu'on veut, comme on veut. Et les références à perlreftut et perldsc (et éventuellement perllol) sont tout à fait valables pour comprendre tout ce qu'on peut faire.
Comment font les gens qui ont a ranger a la fois des adresses, des noms, des valeurs,...etc (le principe de la fiche). associé a un seul index ?
my @tableau = ( { nom => 'toto', adresse => '12 rue du toto', zip => '12345', city => 'totoville' }, );
Et c'est quand on commence à utiliser DBI (la couche d'abstraction de perl pour l'accès aux bases de données, SQL en particulier) et les fonctions genre selectall_hashref qu'on apprécie la souplesse de perl.
Jacques. -- Oxado http://www.oxado.com/
Salut,
On Wed, 07 Dec 2005 23:45:31 +0100, extense <pas@despam.merci> wrote:
Tout ca est bien gentil, je suis content de savoir qu'il existe il
multitude de façon de faire, mais j'aimerais bien qu'on m'en indique
juste "cool" une pour faire ca :
J'aimerai posséder un tableau unique pour contenir des choses diverses
sans avoir a gerer autant de tableau que de type d'élément.
Justement, en perl c'est facile alors qu'en C ça l'est beaucoup moins...
Un tableau peut contenir des scalaires (nombres, chaines...) ou des
références, et celles-ci peuvent être des références vers des scalaires,
des tableaux, des hashes, des fonctions... Et chaque élément peut être
différent (même si ce n'est pas forcément évident à gérer si on n'a pas un
moyen de savoir à quel type d'élément on a affaire).
Mon exemple était tres simple, j'ai des points 3D a stocker.
my @tableau = (
[1,2,3],
[4,5,6],
[0,0,0],
);
Et on y accède comme ça:
$tableau[$index][$coord]
Donc si on a ($x,$y,$z)=(0,1,2) alors
$tableau[$index][$x] fera ce qu'on pense que ça fait.
On peut aussi faire:
my @tableau = (
{ x => 1, y => 2, z => 3 },
{ x => 4, y => 5, z => 6 },
{ x => 0, y => 0, z => 0 },
);
Et on y accède comme ça:
$tableau[$index]{x}
On peut aussi faire des choses amusantes genre:
my @tableau = map { { x => $_->[0], y => $_->[1], z => $_->[2] } } (
[1,2,3],
[4,5,6],
[0,0,0],
);
Et on y accède encore par $tableau[$index]{x}
Comme précisé plus haut, en perl on peut très bien faire:
my @tableau = (
{ type => 'point3d', x=> 0, y=> 2, z=> 42 },
{ type => 'ligne2d', x1 => 0, y1 => 12, x2=> 47, y2 => 79},
{ type => 'rien' },
{ type => 'texte', valeur => 'toto' },
);
Bref, on peut faire ce qu'on veut, comme on veut. Et les références à
perlreftut et perldsc (et éventuellement perllol) sont tout à fait
valables pour comprendre tout ce qu'on peut faire.
Comment font les gens qui ont a ranger a la fois des adresses, des noms,
des valeurs,...etc (le principe de la fiche). associé a un seul index ?
my @tableau = (
{ nom => 'toto', adresse => '12 rue du toto', zip => '12345', city =>
'totoville' },
);
Et c'est quand on commence à utiliser DBI (la couche d'abstraction de perl
pour l'accès aux bases de données, SQL en particulier) et les fonctions
genre selectall_hashref qu'on apprécie la souplesse de perl.
On Wed, 07 Dec 2005 23:45:31 +0100, extense wrote:
Tout ca est bien gentil, je suis content de savoir qu'il existe il multitude de façon de faire, mais j'aimerais bien qu'on m'en indique juste "cool" une pour faire ca :
J'aimerai posséder un tableau unique pour contenir des choses diverses sans avoir a gerer autant de tableau que de type d'élément.
Justement, en perl c'est facile alors qu'en C ça l'est beaucoup moins... Un tableau peut contenir des scalaires (nombres, chaines...) ou des références, et celles-ci peuvent être des références vers des scalaires, des tableaux, des hashes, des fonctions... Et chaque élément peut être différent (même si ce n'est pas forcément évident à gérer si on n'a pas un moyen de savoir à quel type d'élément on a affaire).
Mon exemple était tres simple, j'ai des points 3D a stocker.
my @tableau = ( [1,2,3], [4,5,6], [0,0,0], );
Et on y accède comme ça:
$tableau[$index][$coord]
Donc si on a ($x,$y,$z)=(0,1,2) alors
$tableau[$index][$x] fera ce qu'on pense que ça fait.
On peut aussi faire:
my @tableau = ( { x => 1, y => 2, z => 3 }, { x => 4, y => 5, z => 6 }, { x => 0, y => 0, z => 0 }, );
Et on y accède comme ça:
$tableau[$index]{x}
On peut aussi faire des choses amusantes genre:
my @tableau = map { { x => $_->[0], y => $_->[1], z => $_->[2] } } ( [1,2,3], [4,5,6], [0,0,0], );
Et on y accède encore par $tableau[$index]{x}
Comme précisé plus haut, en perl on peut très bien faire:
my @tableau = ( { type => 'point3d', x=> 0, y=> 2, z=> 42 }, { type => 'ligne2d', x1 => 0, y1 => 12, x2=> 47, y2 => 79}, { type => 'rien' }, { type => 'texte', valeur => 'toto' }, );
Bref, on peut faire ce qu'on veut, comme on veut. Et les références à perlreftut et perldsc (et éventuellement perllol) sont tout à fait valables pour comprendre tout ce qu'on peut faire.
Comment font les gens qui ont a ranger a la fois des adresses, des noms, des valeurs,...etc (le principe de la fiche). associé a un seul index ?
my @tableau = ( { nom => 'toto', adresse => '12 rue du toto', zip => '12345', city => 'totoville' }, );
Et c'est quand on commence à utiliser DBI (la couche d'abstraction de perl pour l'accès aux bases de données, SQL en particulier) et les fonctions genre selectall_hashref qu'on apprécie la souplesse de perl.
Jacques. -- Oxado http://www.oxado.com/
kevin
Comment font les gens qui ont a ranger a la fois des adresses, des noms, des valeurs,...etc (le principe de la fiche). associé a un seul index ?
Ben, ils utilisent des références. Par exemple tu fais un tableau de reférences sur des tableaux. my $index [ ["nom1","adresse1",valeur1], ["nom2","adresse2",valeur2], ["nom3","adresse3",valeur3] ] ;
print "Mr $index->[0][0] à l'adresse : $index->[0][1]n";
$index->[3]= ["a","b",0169000000];
Mais si tu gère beaucoup de structure regarde plutot du coté de Prolog, et si tu gère beaucoup de structure et que tu veux de la performances sans avoir à géré la mémoire regarde du coté de Ada ou Ocaml.
Kévin.
Comment font les gens qui ont a ranger a la fois des adresses, des noms, des
valeurs,...etc (le principe de la fiche). associé a un seul index ?
Ben, ils utilisent des références.
Par exemple tu fais un tableau de reférences sur des tableaux.
my $index [ ["nom1","adresse1",valeur1],
["nom2","adresse2",valeur2],
["nom3","adresse3",valeur3] ]
;
print "Mr $index->[0][0] à l'adresse : $index->[0][1]n";
$index->[3]= ["a","b",0169000000];
Mais si tu gère beaucoup de structure regarde plutot du coté de Prolog,
et si tu gère beaucoup de structure et que tu veux de la performances
sans avoir à géré la mémoire regarde du coté de Ada ou Ocaml.
Comment font les gens qui ont a ranger a la fois des adresses, des noms, des valeurs,...etc (le principe de la fiche). associé a un seul index ?
Ben, ils utilisent des références. Par exemple tu fais un tableau de reférences sur des tableaux. my $index [ ["nom1","adresse1",valeur1], ["nom2","adresse2",valeur2], ["nom3","adresse3",valeur3] ] ;
print "Mr $index->[0][0] à l'adresse : $index->[0][1]n";
$index->[3]= ["a","b",0169000000];
Mais si tu gère beaucoup de structure regarde plutot du coté de Prolog, et si tu gère beaucoup de structure et que tu veux de la performances sans avoir à géré la mémoire regarde du coté de Ada ou Ocaml.
Kévin.
DoMinix
gla wrote: ...
Pour répondre au problème de performance, disont que la notion de performance est relative. J'utilise le Perl pour maquéter les principes (je bosse depuis une semaine sur un moteur 3D sur console et je paufine le pipe d'intégration des éléments en provenance de 3DS Max et Maya). Une fois que ca marche, je le recode en C ou en Assembleur .386 le cas échéant.
il y a un article sur l'ecriture de programme pour la 3D sur perl.com
Pour répondre au problème de performance, disont que la notion de
performance est relative. J'utilise le Perl pour maquéter les principes (je
bosse depuis une semaine sur un moteur 3D sur console et je paufine le pipe
d'intégration des éléments en provenance de 3DS Max et Maya). Une fois que
ca marche, je le recode en C ou en Assembleur .386 le cas échéant.
il y a un article sur l'ecriture de programme pour la 3D sur perl.com
Pour répondre au problème de performance, disont que la notion de performance est relative. J'utilise le Perl pour maquéter les principes (je bosse depuis une semaine sur un moteur 3D sur console et je paufine le pipe d'intégration des éléments en provenance de 3DS Max et Maya). Une fois que ca marche, je le recode en C ou en Assembleur .386 le cas échéant.
il y a un article sur l'ecriture de programme pour la 3D sur perl.com