scala – 在定义路由指令时是否可以使用隐式参数?
发布时间:2020-12-16 18:52:22 所属栏目:安全 来源:网络整理
导读:我有一个指令,定义为 def allowedRoles(roles: UserRole*)(implicit login: Login): Directive0 = ??? 但我似乎无法在不必明确传入login参数的情况下使用它 def myRoutes(implicit req: HttpRequest,login: Login) = { path("example" / "path") { get { all
我有一个指令,定义为
def allowedRoles(roles: UserRole*)(implicit login: Login): Directive0 = ??? 但我似乎无法在不必明确传入login参数的情况下使用它 def myRoutes(implicit req: HttpRequest,login: Login) = { path("example" / "path") { get { allowedRoles(Administrator) { // ← fails ? handleGet } } } } 如果我尝试编译它失败,类型不匹配: [error] found : akka.http.scaladsl.server.Route [error] (which expands to) akka.http.scaladsl.server.RequestContext => scala.concurrent.Future[akka.http.scaladsl.server.RouteResult] [error] required: com.example.Login [error] allowedRoles(Administrator) { handleGet } } 如果我将标记的行更改为allowedRoles(管理员)(登录)然后它可以工作,但似乎我不应该这样做,我错过了什么? 解决方法
这是因为通过Scala规则,{handleGet}被认为是allowedRoles的第二个参数列表.要解决这个问题,请明确说明它实际上是Directive0.apply的参数:
allowedRoles(Administrator).apply { handleGet } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Angular 2/4 adal-angular4活动目录对API问题进行身份验证
- Angular 6.0和Karma Jasmine – 测试结束后浏览器关闭
- .net – 如何在字符串值上设置dotnet webservice set minOc
- angularjs请求头中x-requested-with XHR
- scala – 将隐式转换应用于地图
- 什么时候用shell脚本以及什么时候不用脚本
- AngularJS HTML5模式降级到全页重新加载代替hashbang
- Angular Dart中的模块化路线设计支持独立开发的功能集?
- twitter-bootstrap – 无法在twitter bootstrap中调用未定义
- bash – 在Vagrant上找不到来源