1

浏览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......

4

2 回答 2

3

createConnection不是 inside forDataSource,它在里面Database-- 看到new Database {上一行的?

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

于 2012-04-08T05:15:42.317 回答
0

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

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

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

于 2012-04-08T20:54:14.313 回答