J'aimerais avoir la commodité de
for i, line in enumerate(open(sys.argv[1])):
print i, line
en faisant ce qui suit en Scala
for (line <- Source.fromFile(args(0)).getLines()) {
println(line)
}
J'aimerais avoir la commodité de
for i, line in enumerate(open(sys.argv[1])):
print i, line
en faisant ce qui suit en Scala
for (line <- Source.fromFile(args(0)).getLines()) {
println(line)
}
Merci, mais je pense que c'est : for ((line, i) <- Source.fromFile(args(0)).getLines().zipWithIndex)
Je ne sais pas ce que fait Python, mais ceci commence avec l'index 0 et non l'index 1 pour la première ligne.
Comme déjà répondu par d'autres, si vous voulez que votre index commence à partir de 0, vous pouvez utiliser zipWithIndex
:
for ((elem, i) <- collection.zipWithIndex) {
println(i, elem)
}
Parce que zipWithIndex
crée une copie de la collection s'il est appelé sur la collection elle-même, vous pouvez l'appeler dans un fichier de type view
du colleciton à la place : collection.view.zipWithIndex
.
Néanmoins, l'approche de Python enumerate
possède un paramètre facultatif permettant de définir la valeur de départ de votre index. En scala, vous pouvez le faire :
for ((elem, i) <- collection.zip(Stream from 1) {
println(i, elem)
}
Pour une discussion plus longue, lisez https://alvinalexander.com/scala/how-to-use-zipwithindex-create-for-loop-counters-scala-cookbook .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.