'<-' can be treated as 'in', therefore
for(number <- numbers){ ... }
can be translated into English, as for each number in do numbers
'<-' has a double with different semantics: '->'. It's just that it's just replacing the comma in the tuples: (a, b) is equivalent to (a-> b) or just a-> b. The meaning after this character is that 'a' maps to 'b'. So this is often used in the definition of Maps:
Map("a" -> 1,"aba" -> 3) Map("London" -> "Britain", "Paris" -> "France")
Here you can think of matching as a projection (or not) with some function (for example, "line length", "capital").
The best explanation is here .
Last, but not least, is '=>', which is also a map, but with common semantics. '=>' is used universally in anonymous expressions:
scala> List(1,2,3,4).map(current => current+1) res5: List[Int] = List(2, 3, 4, 5)
What for each element of the element is the current element of the list with the plus one function
List(1,2,3,4).map(c => c%2 match { | case 0 => "even" | case 1 => "odd" | } | ) res6: List[java.lang.String] = List(odd, even, odd, even)
Display current item with math template provided