Как можно объединить (в хорошем смысле) два матча Scala?
Сначала я должен проверить, является ли значение Option допустимым:
myOption match {
case Some(op) =>
doSomethingWith(op)
case None =>
handleTheError()
Затем, если операциябыл действителен, я хочу проверить другой шаблон:
Path(request.path) match {
case "work" => {
println("--Let's work--")
}
case "holiday" => {
println("--Let's relax--")
}
case _ => {
println("--Let's drink--")
}
}
Я мог бы объединить их так:
myOption match {
case Some(op) =>
doSomethingWith(op)
Path(request.path) match {
case "work" => {
println("--Let's work--")
}
case "holiday" => {
println("--Let's relax--")
}
case _ => {
println("--Let's drink--")
}
}
case None =>
handleTheError()
Но, это чувствуется неряшливо.Есть ли лучший способ объединить их так или иначе.
Обновление
Извинения, я должен был объяснить лучше.Я на самом деле пытаюсь выяснить, существует ли известная схема упрощения (или исключения) этих структур управления.Например (представьте, что это правда):
x match {
case a => {
y match {
case c => {}
case d => {}
}
}
case b => {}
}
равно
x -> y match {
case a -> c => {}
case a -> d => {}
case b => {}
}
Я просто бродил, если кто-то уже определил некоторые шаблоны рефакторинга для потока управления, во многом как алгебра, где 2(x + y) = 2x + 2y