受保护的[会话]在Scala中意味着什么?

时间:2012-04-08 03:50:17

标签: scala protected

徘徊ScalaQuery源代码我发现了这样的声明(其实很多):

private[session] val dyn = new DynamicVariable[Session](null)

def forDataSource(ds: DataSource): Database = new Database {
  protected[session] def createConnection(): Connection = ds.getConnection
}

[session]是什么意思?我认为函数内定义的函数不能是protected ...

2 个答案:

答案 0 :(得分:3)

createConnection不在forDataSource内,而在Database内 - 请参阅上一行的new Database {

这意味着范围session(可能是类,对象或包 - 我不知道)中的所有内容都可以看到该定义,以及扩展Database的类。 / p>

答案 1 :(得分:0)

private[<scope>]修饰符表示“范围的私有”,即只有属于(包或类)范围的类才能访问该成员。

protected[<scope>]表示只有扩展此类的类属于范围才能访问该成员。

除此之外,还有private[this],这意味着该成员仅在该类的具体实例中可见。