Désolé pour l'absence d'un titre descriptif; Je ne pouvais pas penser à quelque chose de mieux. Modifiez-le si vous en pensez un. Disons que j'ai deux List
s d'objets, et ils changent tout le temps. Ils doivent rester en tant que listes séparées, mais de nombreuses opérations doivent être effectuées sur les deux. Cela me conduit à faire des choses comme:Comment faire quelque chose comme ça dans Scala?
//assuming A and B are the lists
A.foo(params)
B.foo(params)
En d'autres termes, je fais exactement la même opération à deux listes différentes à de nombreux endroits dans mon code. Je voudrais un moyen de les réduire à une liste sans explicitement avoir à construire une autre liste. Je sais que la seule combinaison des listes A
et b
dans une liste C
résoudrait tous mes problèmes, mais alors nous serions juste de retour à la même opération si j'avais besoin d'ajouter un nouvel objet à la liste (parce que je devrais ajouter à C
ainsi que sa liste respective).
C'est dans une boucle serrée et la performance est très importante. Y a-t-il un moyen de construire un itérateur ou quelque chose qui va itérer A
et ensuite passer à B
, tous de manière transparente? Je sais qu'une autre solution consisterait à construire la liste combinée (C
) chaque fois que je voudrais effectuer une sorte de fonction sur ces deux listes, mais c'est une énorme perte de temps (en termes de calcul).
Correction mineure. Pour obtenir l'itérateur: (l1.elements ++ l2.elements). La solution Iterator ne peut cependant pas être utilisée avec des listes modifiables, comme l'OP le souhaite apparemment. De plus, l'Iterator de la librairie Scala semble être à usage unique. Vous ne pouvez pas le rembobiner et le réutiliser. Pourtant, cause d'upvoting, l'itérateur est le chemin à parcourir ici, mais probablement pas la version de la bibliothèque de scala. – HRJ
Cela fonctionne très bien, merci. J'ai utilisé l'idée de HRJ (éléments). – ryeguy
@HRJ @ryeguy C'est pourquoi le commentaire suivant l'instruction foreach ;-) List.elements est déconseillé dans Scala 2.8.0, utilisez plutôt itérateur. –