我有这种情况
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
,但它仍无效。
当使用私有作用域参数时,无论如何要为我的外部对象实现一个很好的快捷方式?我做想要保留对象的长名称,并且我有很多的私有方法,这就是为什么它真的以我的方式。
答案 0 :(得分:0)
我知道它确定它适合您的层次结构,但是如何将所有私有方法放在
中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