2016-08-09 42 views
0

Ich habe den folgenden Code:Wie aus Konstruktor implizite Referenz zu übergeben

class myClass(someObject:Option[SomeThing]){ 

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

Ich mag würde someObject von Konstruktor doSomething Methode zu übergeben.

Ich kann es in einer Klasse, indem sie implicit Referenz tun

implicit val someImplictObject = someObject 

aber auf diese Weise sieht hässlich aus. Ich denke, ich kann implicitly Methode verwenden, aber ich kann nicht die richtige Syntax finden.

Antwort

3

Sie können Standardwert für someOtherOption auf diese Weise festgelegt:

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

Haben Sie es passieren soll, wenn die Methode aufgerufen wird oder bei der Definition oder? Im ersten Fall brauchen Sie nur doSomething(a, b)(someObject). In der zweiten können Sie

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

, ohne someObject avaialable implizit auf die gesamte Klasse schreiben.