将两个 Directive0 与 & 组合
Combining two Directive0 with &
我预定义了两个 Directive0 如下:
def mySetCookie = if(cookies.length == 1) setCookie(cookies(0)) else if(cookies.length > 1) setCookie(cookies(0), cookies.tail: _*) else pass
def mySetHeader = if(headers.length > 0) respondWithHeaders(headers: _*) else pass
在尝试同时使用这两个指令时,以下工作正常:
mySetCookie
{
mySetHeader
{
complete(StatusCodes.OK)
}
}
但以下不是:
mySetCookie & mySetHeader
{
complete(StatusCodes.OK)
}
我收到以下消息:
Error:(116, 21) type mismatch;
found : akka.http.scaladsl.server.Route
(which expands to) akka.http.scaladsl.server.RequestContext => scala.concurrent.Future[akka.http.scaladsl.server.RouteResult]
required: akka.http.scaladsl.server.ConjunctionMagnet[Unit]
我理解错误消息,但有没有办法可以将这两个指令组合起来,就像我想要实现的那样?
指令通常需要用括号括起来,就像 nicodp 建议的那样。尝试 (mySetCookies & mySetHeader)
我预定义了两个 Directive0 如下:
def mySetCookie = if(cookies.length == 1) setCookie(cookies(0)) else if(cookies.length > 1) setCookie(cookies(0), cookies.tail: _*) else pass
def mySetHeader = if(headers.length > 0) respondWithHeaders(headers: _*) else pass
在尝试同时使用这两个指令时,以下工作正常:
mySetCookie
{
mySetHeader
{
complete(StatusCodes.OK)
}
}
但以下不是:
mySetCookie & mySetHeader
{
complete(StatusCodes.OK)
}
我收到以下消息:
Error:(116, 21) type mismatch;
found : akka.http.scaladsl.server.Route
(which expands to) akka.http.scaladsl.server.RequestContext => scala.concurrent.Future[akka.http.scaladsl.server.RouteResult]
required: akka.http.scaladsl.server.ConjunctionMagnet[Unit]
我理解错误消息,但有没有办法可以将这两个指令组合起来,就像我想要实现的那样?
指令通常需要用括号括起来,就像 nicodp 建议的那样。尝试 (mySetCookies & mySetHeader)