gpt4 book ai didi

scala - 为什么在使用后在单独的特征中定义的隐式会导致编译错误?

转载 作者:行者123 更新时间:2023-12-04 08:33:16 26 4
gpt4 key购买 nike

为什么以下代码会导致编译错误:

class MyImplicit

class FooTest extends ImplicitProvider {

def getImplicit(implicit i: MyImplicit) = i

getImplicit
}

trait ImplicitProvider {
implicit val myImplicit = new MyImplicit
}

编译错误是:
could not find implicit value for parameter i: MyImplicit getImplicit

如果我将特性 ImplicitProvider 移到 FooTest 类上方,一切正常。

我用 Scala 2.11.7 和 sbt 0.13.9 编译。

这是预期的行为还是错误?

最佳答案

这似乎是一个“功能”。看看this ticket中的评论.

显然,当未明确指定隐式类型时,这是预期的行为。因此,您可以通过向隐式 val 添加类型注释来修复它。

class MyImplicit

class FooTest extends ImplicitProvider {

def getImplicit(implicit i: MyImplicit) = i

getImplicit
}

trait ImplicitProvider {
implicit val myImplicit: MyImplicit = new MyImplicit
}

关于scala - 为什么在使用后在单独的特征中定义的隐式会导致编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35480322/

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