gpt4 book ai didi

scala-将自类型注释类传递给子对象

转载 作者:行者123 更新时间:2023-12-04 18:12:55 25 4
gpt4 key购买 nike

抱歉,如果那是一个愚蠢的标题,我不知道该如何清楚地表达

说我有伐木特性:

trait Logging {
def log(s:String)
}

然后一些实现
trait PrintlnLog extends Logging {
def log(s:String) { println(s) }
}

我这样使用
class SomeProcess { this:Logging =>
def doSomeJunk() {
log("starting junk")
...
log("junk finished")
}
}

我可以像这样使用此类
val p = new SomeProcess () with PrintLog
p.doSomeJunk()

现在,如果我有这个
class SubProcess { this:Logging => 
def doSubJunk() {
log("starting sub junk")
...
log("finished sub junk")
}
}

class ComplexProcess { this:Logging =>
def doMoreJunk() {
log("starting more junk")
val s = new SubProcess with // ??? <-- help!
s.doSubJunk()
log("finished more junk")
}
}

在ComplexProcess中,我想实例化已混入ComplexProcess的同一日志记录特性中的SubProcess混合,但是ComplexProcess不知道那是什么。有没有办法得到它的引用?

最佳答案

你不能这样做。在这种情况下,您可能会执行以下操作:

trait WithSubProcess {
def s: SubProcess
}

class ComplexProcess { this: Logging with WithSubProcess ... }

关于scala-将自类型注释类传递给子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9570288/

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