scala中复杂模式匹配的复杂性抽象
如果我对一个(相对)复杂的case类进行大量的模式匹配,但大多数时候我只对它的一个或两个字段感兴趣。有没有一种方法可以抽象出其他字段(可能是通过包装类?)?下面是我试图简化的一个例子:scala中复杂模式匹配的复杂性抽象,scala,pattern-matching,Scala,Pattern Matching,如果我对一个(相对)复杂的case类进行大量的模式匹配,但大多数时候我只对它的一个或两个字段感兴趣。有没有一种方法可以抽象出其他字段(可能是通过包装类?)?下面是我试图简化的一个例子: def receive = { case HttpRequest(POST, "foo", _, HttpBody(_, body), _) => // action case HttpRequest(GET, "bar", _, _, _) => // action } 我只对请求类型、u
def receive = {
case HttpRequest(POST, "foo", _, HttpBody(_, body), _) => // action
case HttpRequest(GET, "bar", _, _, _) => // action
}
我只对请求类型、url和有时的正文感兴趣,所以我理想地将模式匹配定义为
case-request(POST,“foo”,body)
或类似 只需提出自己的请求
提取器即可。下面是一个简化的示例:
case class Complex(a: String, b: Int, c: String)
object Simple {
def unapply(c: Complex): Option[(String, Int)] = Some(c.a, c.b)
}
Complex("B", 2, "x") match {
case Simple("A", i) => println("found A, " + i)
case Simple("B", i) => println("found B, " + i)
}
// prints "found B, 2"
有。