gpt4 book ai didi

scala - 将外部对象的别名类型作为私有(private)范围参数

转载 作者:行者123 更新时间:2023-12-01 06:43:15 24 4
gpt4 key购买 nike

我有这种情况

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com