Я думаю, что основная причина этой ошибки - шаблон ma gnet. Если вы используете pathPrefix(pathMatcher)(indxRoute(dir))
, то блок (indxRoute(dir))
принимается за неявный аргумент pathPrefix
. pathPrefix
возвращает директиву типа Directive[T]
, а класс Directive
не принимает никаких неявных параметров и, следовательно, ошибки.
Возможные решения:
с использованием метода tapply
tapply
метод - это специальный метод, присутствующий в классе Directive
. tapply
вызывает внутренний маршрут с набором извлеченных значений типа T
, как показано в следующем примере кода:
def routeAsDir[T](pathMatcher: PathMatcher[T], dir: String): Route = {
pathPrefix(pathMatcher).tapply(t => indexRoute(dir))
}
Альтернативный подход
def routeAsDir[T](pathMatcher: PathMatcher[T]): Directive[T] = pathPrefix(pathMatcher)
Используйте эту функцию для Директива get и используйте эту директиву для построения маршрута, как показано ниже:
val matcher: PathMatcher[Unit] = "foo" / "bar"
val route: Route = routeAsDir(matcher) {
indexRoute("foo/bar")
}
Это решение работает, потому что routeAsDir(matcher)
возвращает Directive[Unit]
или Directive0
, для которого метод apply вызывается с внутренними маршрутами.
Дайте мне знать, если это поможет!