Y a-t-il un moyen de construire des tableaux multi-dimensions dynamiques dans Scala? Je sais que les tableaux de Scala doivent être initialisés dans ses tailles et ses dimensions, donc je ne le veux pas. La structure de données devrait être dynamique. J'ai essayé de le construire avec des listes dans des listes, mais je me suis perdu d'une certaine manière. P>
Il y a tellement de types différents, peut-être que je n'ai tout simplement pas trouvé le bon. Alors s'il vous plaît, poussez-moi à la bonne direction. P>
3 Réponses :
Eh bien, cela dépend beaucoup de ce que vous avez l'intention de le faire, mais votre meilleure hypothèse est Par exemple: P>
scala> indexedseq (indexedseq (1, 2, 3), indexedseq (4, 5), indexedseq (6, 7, 8, 9))
RES0: indexedseq [indexedseq [int]]] = vecteur (vecteur (1, 2, 3), vecteur (4, 5), vecteur (6, 7, 8, 9)) p> indexedseq [indexedseq [t]] code> (ou des enveloppes plus profondes), en utilisant vecteur code> comme implémentation de indexedseq code> (c'est la mise en œuvre par défaut de toute façon). P>
Bonjour, tu pour ta réponse. Comment accéder à une valeur unique dans cette indexage, par exemple Deuxième "rangée", deuxième "colonne", RES0 (2) (2) ou quelque chose comme ça?
@Evildead: Oui. Mais comme je suis sûr que vous savez, SCALA a une solution, donc des choses comme celle-là sont au moins aussi faciles à vous confirmer empiriquement car elles doivent être confirmées ici. Oh, sauf que la deuxième rangée et la deuxième colonne serait vectorielles (1) (1) code>.
Oui, je veux juste éviter toute erreur :) Et bien sûr, c'est (1) (1), était tardif la nuit dernière. Merci.
@ezvildead je viens de remarquer que vous voulez des structures de données mutables. Pour une raison quelconque, je pensais que vous vouliez une bonne Structure de données immuable i>. Vecteur CODE> est bon car il est persistant et avec le journal (n) Copier / redimensionner, mais si vous voulez une mutabilité, je pense que Rex Kerr a le meilleur jusqu'à présent.
Ok, je vois mon problème principal était que j'ai utilisé mes paquets de distribution pour Scala, qui était 2.7.7. Donc, la plupart des constructions que j'ai trouvées ne fonctionnaient pas. La mise à jour de 2,8 fait clairement de nombreuses choses :)
Vous pouvez créer une matrice de 2 dims de manière dynamique comme suit:
val aaa = Array.fill (3) (aa)
val aa = array.ofdim [int] (3, 4) code> est un peu plus gentil et fait la même chose
Si vous voulez faire quelque chose comme
A (5) = // résultat de certains calculs p>
, vous devez utiliser quelque chose de la hiérarchie des collections mutables. Je suggérerais Notez que araybuffer code>. P> remplir code> vous permet de créer et d'initialiser automatiquement des structures 5D. Notez également que vous pouvez prolonger la longueur de ceux-ci, mais il ne prolongera pas toute la structure multidimensionnelle, celle que vous ajoutez. Donc, par exemple, p>
Je le commente ici à nouveau, comme je vois maintenant mon problème utilisait 2,7,7 de ma distribution. Je me demandais pourquoi toutes les choses que j'ai trouvées là-bas ne fonctionnent pas pour moi. Maintenant, avec 2.8 Tout fonctionne bien. J'ai testé votre réponse et tout va bien fonctionner. C'est exactement ce dont j'avais besoin. Grand merci encore