如何从构造函数传递隐式引用

How to pass implicit reference from constructor

我有以下代码:

class myClass(someObject:Option[SomeThing]){

  def doSomeThing(a:Int,b:Int)(implicit someOtherOption:Option[SomeThing]) = ??? 
}

我想将 someObject 从构造函数传递给 doSomething 方法。

我可以通过在 class

中创建 implicit 引用来做到这一点
implicit val someImplictObject = someObject

但是这样看起来很难看。我想,我可以使用 implicitly 方法,但找不到正确的语法。

您可以通过这种方式为 someOtherOption 设置默认值:

def doSomeThing(a:Int, b:Int)
   (implicit someOtherOption:Option[SomeThing] = someObject) = ???

是调用方法的时候传还是定义的时候传?在第一种情况下,您只需要 doSomething(a, b)(someObject)。第二,你可以写

def doSomeThing(a:Int,b:Int) = { // no someOtherOption parameter
  implicit val someImplictObject = someObject
  ...
}

没有使 someObject 对整个 class.

隐式可用