Scala Akka通用自定义指令

Scala Akka通用自定义指令,scala,akka,akka-http,Scala,Akka,Akka Http,我正在使用自定义指令验证我的参数: def optionalIntParamAs[C](parameterName: String, validator: Int => C Or ErrorMessage): Directive1[Option[C]] = parameter(parameterName.as[Int].?) .recoverPF[Tuple1[Option[Int]]] { case Seq(MalformedQueryParamR

我正在使用自定义指令验证我的参数:

  def optionalIntParamAs[C](parameterName: String, validator: Int => C Or ErrorMessage): Directive1[Option[C]] =
    parameter(parameterName.as[Int].?)
      .recoverPF[Tuple1[Option[Int]]] {
        case Seq(MalformedQueryParamRejection(name, msg, cause)) =>
          reject(MalformedQueryParamRejection(name,
              s"Invalid value '${msg.split("'")(1)}' for query parameter '$name'.", cause))
      }
      .flatMap {
        case Some(intParam) =>
          validator(intParam) match {
            case Good(c) => provide(Some(c))
            case _       => reject(ValidationRejection(s"Invalid value '$intParam' for query parameter '$parameterName'."))
          }
        case _ => provide(None)
      }
在我的路线中用作:

optionalIntParamAs[PageSize]("pageSize", PageSize.validate) { pageSize =>
  ...
}
我想要一个通用指令,这样我就可以写:

optionalParam[Int].as[PageSize]
optionalParam[String].as[...]
有什么建议吗

更新:使用Stefano的解决方案,我们将得到以下编译错误:

找到:akka.http.scaladsl.common.nameOption插座[In][error] 必修的: akka.http.scaladsl.server.directions.parameterdirections.parammate [错误]参数(parameterName.as[In]。?)

为什么?