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

时间:2016-08-09 08:33:58

标签: scala functional-programming implicit

我有以下代码:

class myClass(someObject:Option[SomeThing]){

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

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

我可以通过在类

中进行implicit引用来实现
implicit val someImplictObject = someObject

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

2 个答案:

答案 0 :(得分:3)

您可以通过以下方式设置someOtherOption的默认值:

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

答案 1 :(得分:1)

您想在调用方法或定义方法时传递它吗?在第一种情况下,您只需要doSomething(a, b)(someObject)。在第二个,你可以写

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

没有隐含地赋予整个班级someObject avaialable。