Nested ``++match++`` structures are difficult to understand because you can easily confuse the cases of an inner ``++match++`` as belonging to an outer statement. Therefore nested ``++match++`` statements should be avoided.


Specifically, you should structure your code to avoid the need for nested ``++match++`` statements, but if you cannot, then consider moving the inner ``++match++`` to another function.

== Noncompliant Code Example

----
def foo(n: Int, m: Int): Unit = {
  n match {
    case 0 => m match {
        case 0 =>
        // ...
      }
    case 1 =>
    // ...
  }
}
----

== Compliant Solution

----
def foo(n: Int, m: Int): Unit = {
  n match {
    case 0 => bar(m)
    case 1 =>
    // ...
  }
}

def bar(m: Int): Unit = {
  m match {
    case 0 =>
    // ...
  }
}
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
