Scala: Création d'une liste de tuples à partir de la liste des éléments en séquence

Je suis très nouveau à la Scala de sorte que cette question peut être très naïf.

J'ai une liste comme ça List[Int] = List(0, 3, 6, 12, 14, 15, 16, 17). Je suis en train de créer une liste comme ça [(0,3),(3,6),(6,12)..] et ainsi de suite. Jusqu'à présent c'est ce que j'ai essayé:

val l1= List(0, 3, 6, 12, 14, 15, 16, 17)
var l2=scala.collection.mutable.ListBuffer[(Int,Int)]()
l1.zipWithIndex.slice(0,l1.length-1).foreach(x=>{val newval=(x._1,l1(x._2+1)); l2+=newval})

Deux questions ici:

  1. Si je n'utilise pas val newval, c'est à dire essayer de faire l1.zipWithIndex.slice(0,l1.length-1).foreach(x=>l2+=(x._1,l1(x._2+1))), le compilateur dit:
    <console>:10: error: type mismatch;
    found : Int
    required: (Int, Int)
    l1.zipWithIndex.slice(0,l1.length-1).foreach(x=>l2+=(x._1,l1(x._2+1)))
    . Pourquoi est-ce?
  2. Ce serait un moyen de le faire sans la mutable listbuffer?

OriginalL'auteur rivu | 2015-08-04