How does | (pipe) in pattern matching work?

Viewed 6976

You can write:

str match { case "foo" | "bar" => ... }

At first glance it looks like | could be an extractor object, however:

str match { case |("foo", "bar") => ... }

does not work. (And I can't see how that could be implemented anyway.)

So it is a magic built-in operator?

(I believe I have seen this question on SO before, but it's impossible to search for...)

2 Answers
Related