KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have the following code which recursively operates on each element within a List def doMatch(list: List[Int]): Unit = list match { case last :: Nil => println("Final element.") case head :: tail => println("Recursing..."); doMatch(tail) } Now, ignoring that this functionality is available through filter() and foreach() , this works just fine. However, if I try to change it to accept any Seq[Int] , I run into problems: Seq doesn't have ::, but it does have +:, which as I understand is basically the same thing. If I try to match on head +: tail however, the compiler complains 'error: not found: value +:' Nil is specific to List, and I'm not sure what to replace it with. I'm going to try Seq() if I ever get past the previous problem Here is how I think the code should look, except it doesn't work: def doMatch(seq: Seq[Int]): Unit = seq match { case last +: Seq() => println("Final element.") case head +: tail => println("Recursing..."); doMatch(tail) } Edit: So many good answers! I'm accepting agilesteel's answer as his was the first that noted that :: isn't an operator in my example, but a case class and hence the difference.
Tags (comma-separated)
Save Edits
Cancel