Boot.scala在哪里适用?
我不时会看到有一个boot.
scala或Boot.
scala文件的项目.虽然这似乎不是一个硬的快速
Scala规则,但它似乎是包含Boot.scala文件的民间传说.一些项目.这个特定项目使用Akka和Spray,它转换为actor模式和REST服务.
有人请说明在这样的文件中通常可以预期的功能类型,以及这是一种常见的排序模式吗? 作为这个问题的扩展(请先回答第一位:-),我将非常感谢知道如何阅读此代码,该代码位于具有多个Boot.scala文件的项目中. Web包中的Boot.scala: trait Web { this: Api with Core => .... } api包中的Boot.scala: trait Api { this: Core => .... } 核心包中的Boot.scala: trait Core { implicit def actorSystem: ActorSystem implicit val timeout = Timeout(30000) val application = actorSystem.actorOf( props = Props[ApplicationActor],name = "application" ) Await.ready(application ? Start(),timeout.duration) } 可以认为一个包依赖于另一个包,并且Boot.scala文件可能是基于actor的系统中的常见视图,但是如何“读取”关系呢?例如,我如何用英语阅读trait Web {this:Api with Core => …}? 在特定实例中,应用程序的起点位于主文件中: object Main extends App { implicit val system = ActorSystem("RESTService") class Application(val actorSystem: ActorSystem) extends Core with Api with Web { } new Application(system) sys.addShutdownHook { system.shutdown() } } 我意识到我的问题对某些人来说似乎微不足道,但我想在这里进入Scala部落,并且“秘密密码”不在任何手册中. 解决方法
我不知道Boot.scala是否是一种常见的模式,但它在Lift中使用并包含应用程序的主要配置.由于Lift相当陈旧(相对于其他scala项目),它可能已经设置了一个约定.
对于另一个问题,您应该阅读cake pattern和self types.例如 trait Web { this: Api with Core => .... } 定义一个特征Web,它只能混合到从API和Core继承的类或特征中,或者将它们作为其自身类型的一部分.从而 class Application(val actorSystem: ActorSystem) extends Core with Api with Web { } 如果没有混合Api特征,则不会键入检查,因为Web特征需要它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为什么类Unix环境中的程序在名字后面有数字?
- angularjs – Angular ui-router:ui-views vs d
- WebService soapheader加密
- 具有Scala丰富包装(隐式)的类的新构造函数
- angularjs – 使用$routeParams时angular.js模块
- 在未打开的文件中将行加载到VimScript中的变量中
- Scala – 使用伴随对象作为函数接受块的简写参数
- Angular 2错误:无法绑定到’innerhtml’,因为它
- Angular-Cli v1.6.6 Microsoft Edge浏览器的源映
- angularjs – 如何获取多个选中的复选框值