Scala中的链接包子句的动机是什么?
链接包装条款在
Scala 2.8中引入,如Martin Odersky在Scala
site上所述.
我不太明白这个直觉. 以下是针对嵌套软件包的Scala书中的示例: package bobsrockets { package navigation { // In package bobsrockets.navigation class Navigator package tests { // In package bobsrockets.navigation.tests class NavigatorSuite } } } 嵌套包的这种使用情况是有道理的,因为我们可以在同一个文件中使用多个嵌套包,但是新语法实现了与之前相同的功能,但没有括号.在简洁的Scala代码之间分离出这个包是不是很难? package bobsrockets package navigation // In package bobsrockets.navigation class Navigator package tests // In package bobsrockets.navigation.tests class NavigatorSuite 请让我知道,如果我错了,或者我误解了这个概念. 解决方法
您可以按照示例所示的方式使用没有括号的语法,但是我从未在“现实生活中”中看到这一点.我认为几乎总是这个新功能只是用来获取父包的范围:
package bobrockets.navigation package tests //now the content of bobrockets.navigation is in scope 这与写作基本相同 package bobrockets.navigation.test import bobrockets.navigation._ 但是,第一个版本遵循DRY原则.例如.如果将bobrockets包重命名为robertsrockets,则可能会忘记在第二个版本中更改导入(可能指向一些“旧”代码),这在第一个版本中是不可能的.在某种意义上,这个(以及私有[bobsrockets.navigation])的修改器的可能性允许使用非常轻量级的语法将包组作为“模块”或“超级包”使用. 这是我知道的主要用法,但是Scala显示出令人惊奇的协同效应,并且以令人感兴趣的方式模糊了线条(例如,对象,包和对象之间,在val和对象之间,defs和函数之间等等).因此,如果此功能具有其他有用的应用程序,未来将显示. [更新]这是Martin Odersky自己的一篇关于这个话题的新文章:http://www.artima.com/scalazine/articles/chained_package_clauses_in_scala.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- scala – 使用光滑插入和更新数据时丢弃值
- 角度2:没有发现NgModule元数据
- debian – 如何解决此区域设置问题?
- 使用angularjs显示加载图标或加载进度条
- 【Angular4】You have to be inside an Angular CLI projec
- twitter-bootstrap – Bootstrap 3具有与字段大小调整的反馈
- angularjs如何根据index.html中的路由进行设置
- 在${var?}中,bash变量参数扩展中的问号的含义是什么?
- openldap – 禁止使用cn = config进行全局匿名绑定
- angularjs仿拉勾网webapp总结与记录