我是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/