Poussant tableau comme un élément à un autre tableau - de ne pas créer de tableau multidimensionnel
J'ai un tableau, @allinfogoals
et je veux faire un tableau multidimensionnel. Dans une tentative pour ce faire, j'essaie de pousser un tableau comme un élément de la sorte:
push @allinfogoals, ($tempcomponents[0], $tempcomponents[1], $singlehometeam);
Où ces éléments dans le tableau parenthèses sont toutes les cordes que j'ai au préalable. Cependant, si j'référence $allinfogoals[0]
, j'obtiens la valeur de $tempcomponents[0]
et si j'essaie $allinfogoals[0][0]
j'obtiens:
Can't use string ("val of $tempcomponents[0]") as an ARRAY ref while "strict refs" in use
Comment puis-je ajouter de la ces tableaux à @allinfogoals
pour en faire un tableau multidimensionnel?
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, les parens dans
ne rien faire du tout. C'est juste une façon bizarre d'écrire
Parens changement de priorité; ils ne créent pas de liste ou de tableaux.
Maintenant à votre question. Il n'y a pas une telle chose comme un tableau 2d en Perl, et les tableaux peuvent contenir uniquement des scalaires. La solution est de créer un tableau de références à d'autres tableaux. C'est pourquoi
est court pour
En tant que tel, vous avez besoin pour stocker vos valeurs dans un tableau et de mettre une référence à ce tableau dans le tableau.
Mais Perl fournit un opérateur qui simplifie pour vous.
Pas exactement pourquoi cela fonctionne, mais il ne...
Nécessaires pour créer un itérateur,
$i
pour ce faire.Selon @ikegami, ce qui suit est la raison.
Qui ne fonctionne que si
$allinfogoals[$i]
n'est pas défini, lorsque c'est une drôle de façon d'écrirequi utilise autovivification à faire l'équivalent de
peut être atteint sans
$i
à l'aide deCe dernier extrait est expliqué en détail dans ma réponse.