将两个 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)