来自 spray.io 文档页面:
color
将参数“color”的值提取为String
color.?
提取参数“color”的可选值为Option [String]
amount.as[Int]
将参数“amount”的值提取为Int,您需要在范围内使用匹配的反序列化器才能工作(另请参阅解组)
那么如何解析可选的Int
值呢?像amount.?.as[Int]
这样的东西似乎不起作用。
答案 0 :(得分:4)
case class NameReceptacle[A](name: String) {
def as[B] = NameReceptacle[B](name)
def as[B](deserializer: FSOD[B]) = NameDeserializerReceptacle(name, deserializer)
def ? = as[Option[A]]
def ?[B](default: B) = NameDefaultReceptacle(name, default)
def ![B](requiredValue: B) = RequiredValueReceptacle(name, requiredValue)
}
直截了当的语法是
"amount".as[Option[Int]]
不幸的是,直接为选项类型创建NameRecaptable
没有语法糖,但您可以分两步完成:
"amount".as[Int].as[Option[Int]]
?
是NameRecaptable[A].as[Option[A]]
的别名,因此您可以使用以下代码(请注意后缀运算符语法):
"amount".as[Int]?