gpt4 book ai didi

scala implicit 仅在使用时导入

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

我是 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 的类型。

关于scala implicit 仅在使用时导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313939/

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