我有这种情况
object SuperHorribleLongName {
trait X {
private[SuperHorribleLongName] def internalGaga() : Unit
}
}
我试图让这样的工作:
object SuperHorribleLongName {
private type Sup = SuperHorribleLongName.type
trait X {
private[Sup] def internalGaga() : Unit
}
}
但这只是给了我
"error: Sup is not an enclosing class"
......我也试过 type Sup = this.type
,但它仍然不起作用。无论如何在用作私有(private)范围参数时为我的外部对象实现一个很好的快捷方式?我确实想保留对象的长名称,并且我有很多私有(private)方法,这就是它真正妨碍我的原因。
最佳答案
我确定它适合您的层次结构,但是将所有私有(private)方法放在一个
private trait Y {
否则,您始终可以模仿命名空间:
object SuperHorribleLongName {
object SHLN { //Dummy alias
trait X {
private[SHLN] def internalGaga() : Unit
}
}
type X = SHLN.X //Lift into main object
}
这并不令人满意,因为 SHLN 是可见的,并且将其旋转
private
可以防止提升 X。而且它很乱。所以,让我们把问题从里到外:
private object SHLN {
trait X {
private[SHLN] def internalGaga() : Unit
}
}
//Expose the instance under wanted name
val SuperHorribleLongName = SHLN
关于scala - 将外部对象的别名键入为私有(private)范围参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8246278/