I have a method defined as below and wanted to combine pattern match. The or operator give me compiler error (||).
def isPaired(input: String): Boolean = {
def go(x: List[Char], level: Int = 0): Boolean = {
x match {
case Nil => true
case '(' :: xs1 if level < 0 => false
case '[' :: xs1 if level < 0 => false
case '{' :: xs1 if level < 0 => false
case ')' :: xs1 if level == 0 => false
case ']' :: xs1 if level == 0 => false
case '}' :: xs1 if level == 0 => false
case '(' :: xs1 => go(xs1, level + 1)
case '[' :: xs1 => go(xs1, level + 1)
case '{' :: xs1 => go(xs1, level + 1)
case ')' :: xs1 => go(xs1, level - 1)
case ']' :: xs1 => go(xs1, level - 1)
case '}' :: xs1 => go(xs1, level - 1)
case _ :: xs1 => go(xs1, level + 1)
}
}
go(input.toList)
}
The below gives compiler error:
case '(' :: xs1 || '[' :: xs1 || '{' :: xs1 if level < 0 => false
case ('(' :: xs1) || ('[' :: xs1) || ('{' :: xs1) if level < 0 => false
How to apply or condition?