1

我有一个案例类:

case Context(tracker: Tracker)

我有一个带有 get def 的处理器类,它期望 Tracker 的隐式参数定义为:

class Processor(){
    def get(id: String)(implicit tracker: Tracker): Unit
}

我有我的呼叫课程:

class repo(process: Processor){
    def get(id: String)(implicit ctx : Context): Unit{
        process.get(id)
    }
}

有没有一种简单的方法可以让我从上下文 -> Tracker 进行映射?我一直在尝试在“repo”的伴侣中使用隐式 def,但在调用 process.get(id) 时仍然看到 Tracker 的“没有可用的隐式 val”

4

1 回答 1

2

您可以在范围内定义隐式

implicit def ifContextThenTracker(implicit c: Context): Tracker = c.tracker

我一直在尝试在“repo”的伴侣中使用隐式 def,但在调用 process.get(id) 时仍然看到 Tracker 的“没有可用的隐式 val”

请参阅Scala 在哪里寻找隐式?

如果您可以访问它,您可以放入ifContextThenTracker伴随对象。Tracker否则,您可以导入隐式。

于 2021-09-20T22:12:37.550 回答