2014-11-04 22 views
6

Attualmente sto creando con scalatest.org alcuni test di unità per la mia domanda:argomenti pass per oggetto App a Scala

scala> object Test extends App { 
    | println(args) 
    | } 

Come posso passare parametri a quell'oggetto? Ho provato sovrascrivendo il valore args ma dopo alcune ricerche ho scoperto che non è possibile:

/** The command line arguments passed to the application's `main` method. 
    */ 
    @deprecatedOverriding("args should not be overridden", "2.11.0") 
    protected def args: Array[String] = _args 

    private var _args: Array[String] = _ 

Come posso passare ai parametri personalizzati sottolineatura _ nel codice?

Acclamazioni

+0

Sembra un odore di codice per me essere fissato sull'App come punto di ingresso per l'iniezione di nuovi dati. Perché non eseguirlo dalla riga di comando? –

risposta

11

penso che si vuole invocare il metodo main(args: Array[String]) ereditato da App.

scala> object Test extends App { args.foreach(println) } 
defined object Test 

scala> Test.main(Array("A1")) 
A1 

scala> Test.main(Array("A1", "A2")) 
A1 
A2 
+0

'val test = Test; test.main (Array ("test")) 'molto bene che ha funzionato per me, grazie! – zio