Note that you can always use decomposition in Scala as long as all parts of the code are single entry/single exit. This works because nested functions in Scala can access the local variables of the outer function. E.g.:
def isValid(input: String): Boolean = {
def testLength = input.trim.length >= 1
def testSomething = input.substring(0, 3) == "sth"
return testLength && testSomething
}
You can thus break down any arrow-like structure into its subcomponents as much as you desire.
Note also that using match for testing booleans or comparing something for equality is overkill.