加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala的特征命名约定

发布时间:2020-12-16 09:32:40 所属栏目:安全 来源:网络整理
导读:假设我在Scala有一个特质 trait Connection { def init(name: String) def dispose} 我想创建一个实现它的类。但我想将其命名为连接: class Connection extends Connection { // .... } 这不会奏效当然,我可以命名不同的东西,但事实证明,Scala中的命名约
假设我在Scala有一个特质

trait Connection {

  def init(name: String)
  def dispose
}

我想创建一个实现它的类。但我想将其命名为连接:

class Connection extends Connection {
  // ....
 }

这不会奏效当然,我可以命名不同的东西,但事实证明,Scala中的命名约定说我应该将trait命名为普通类,意思是没有任何前缀,我将在C#(IConnection,IConnection将是该接口) 。

在这种特殊情况下,类的连接名称和特征更适合。

或者我在Scala的命名约定中错过了什么?

解决方法

你将一般的API提取到Connection特性本身就意味着它有多个特定的实现。这些实现当然与一些更具体的实体有关,例如一个MySQL或一个H2数据库。

根据您应用的所选架构,有几种方法可以解决您的问题:

>如果您将特定的实现保留在同一个命名空间中:

> myApp.Connection
> myApp.MySqlConnection
> myApp.H2Connection

>但是,由于名称冗余(*连接部分)实际上并不鼓励上述,推荐使用新的软件包,例如:

> myApp.Connection
> myApp.connections.MySql
> myApp.connections.H2

要么

> myApp.Connection
> myApp.Connection.MySql
> myApp.Connection.H2

如果您选择将特定的实现放在Connection的一个配套对象中。
>在更先进的架构方法中,您将最终获得具有私有包的特定实现:

> myApp.Connection
> myApp.mySql.Connection
> myApp.h2.Connection

即使这样,尽管连接名称冲突也很容易解决,因为类型位于不同的包中,通过使用合格的引用(myApp.Connection)或限定的导入:

import myApp.{Connection => GeneralConnection} //or IConnection if you insist

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读