scala implicit 仅在使用时导入
pander-it
阅读:19
2025-01-19 22:14:33
评论:0
我是 scala 的新手,正在尝试一些动手练习。
我正在尝试通过将隐含项放在伴生对象中来使用隐含项。但是,编译器不会检测 implicit 除非它被使用。
class ImplicitTest {
import Implicits.implicitInt;
println(implicitInt)
def implicitm1(implicit i : Int) = 1
println(implicitm1)
}
object Implicits {
implicit val implicitInt = 1
}
这编译得很好。但是如果我注释掉第三行
\\println(implicitInt)`
然后我得到一个编译时错误
println(implicitm1)`
说
could not find implicit value for parameter i:Int`
not enough arguments for method implicit m1(implicit i:Int) . Unspecified value parameter i`
我做错了什么?
提前致谢
请您参考如下方法:
如果您包含 val implicitInt: Int = 1
的类型,它会起作用。此类问题是建议始终为隐式指定类型的原因之一。
Scala 类型推断从上到下进行,因此在您的情况下,编译器在对 println(implicitm1)
行进行类型检查时还不知道此类型。
我猜想当您包含 println(implicitInt)
时,编译器被迫在该行查找 implicitInt
的类型。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。