Play2 的异常有一个很好的结果解析器 DSL:
case class User(id:Pk[String], name:String)
object User {
val parser = get[String]("id") ~ get[String]("name") map {
case id ~ name => User(id,name)
}
}
我不明白这部分,为什么两个变量之间case id ~ name
可以有 a ?~
我case
通常认为:
case id => _
case (a,b) => _
case Array(a, _*) => _
但我没有看到case id ~ name
。
它定义了一个案例类~
:
case class ~[+A, +B](_1:A, _2:B)
我写了一个简单的测试:
case class ~[+A, +B](_1:A, _2:B)
new ~("a","b") match {
case x ~ y => println(x , y)
}
它打印a,b
,但为什么语法是case x ~ y
?