我是Scala的新手,请多多包涵。

class NeedsImplicitSuffix(prefix: String)(implicit suffix: String) {
    def doImplicitly(): String = {
        s"$prefix-$suffix"
    }
}

class HasPrefixInConstructor(suffix: String) {
    def thisWontCompile(): NeedsImplicitSuffix = {
        new NeedsImplicitSuffix("that")
    }
}

如果我在控制台(或IDE)中尝试此操作,则会收到以下错误。
error: could not find implicit value for parameter suffix: String

thisWontCompile方法的上下文中,我可以访问字符串suffix并使其可以作为隐式值传递吗?我认识到,在Scala中执行此操作的规范方法是重新定义“HasPrefixInConstructor”类定义,但是这严重干扰了我对实例化的约束。我希望我的双手不被绑在这里。

最佳答案

是的,您可以显式传递隐式参数

class HasPrefixInConstructor(suffix: String) {
    def thisWontCompile(): NeedsImplicitSuffix = {
        new NeedsImplicitSuffix("that")(suffix) // suffix is passed explicitly
    }
}

斯卡拉REPL
scala> case class A(a: Int)(implicit b: String)
defined class A

scala> class B(b: String) {
     | def foo: A = A(1)(b)
     | }
defined class B

scala>

关于scala - Scala,我可以将类构造函数参数(未定义为隐式)传递为隐式值吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50955285/

10-12 03:09