2011-10-15 26 views
7

C'è un modo per aggiungere implicitamente metodi in scala oggetto?Aggiunta implicita di metodi oggetti

Upd: Per esempio, libreria Scala non filtrato ha oggetto Singleton Body che contiene i metodi Body.string(req: HttpRequest) e Body.bytes(req: HttpRequest) per il corpo leggere da richiesta HTTP. Quindi, voglio leggere il corpo nei miei oggetti di dominio, come Body.cars(req:HttpRequest).

+0

Si prega di spiegare meglio ciò che si desidera. –

risposta

15
import scala.language.implicitConversions 

object ObjA 

object ObjB { 
    def x = 1 
} 

object Main { 
    implicit def fromObjA(objA: ObjA.type) = ObjB 

    def main(args: Array[String]): Unit = { 
     println(ObjA.x) 
    } 
} 
+0

È quello di cui ho bisogno. Grazie. – KkZz

+1

Non ho capito ... È tutto il file sorgente? Ti piace ObjB.scala? O è questa parte di qualche implementazione del metodo? Ho provato a inserire questo nel mio codice e non ha funzionato ... –

+0

@EduardoBezerra Ho aggiornato la risposta per lavorare con 2.11.7, ma non uso Scala al giorno d'oggi, quindi qualsiasi suggerimento è benvenuto. – elbowich

11

Cosa intendete per aggiungendo implicitamente i metodi? Questo codice snipper rispondere alla tua domanda:

implicit def toFunkyString(s: String) = new { 
    def reverseUpper = s.reverse.toUpperCase 
} 

"Foo".reverseUpper //yields 'OOF' 
toFunkyString("Foo").reverseUpper //explicit invocation 
+1

'" Foo "' è un'istanza di classe, ciò che intendo è l'aggiunta di metodi nell'oggetto singleton, qualcosa come 'Math.myMethod (1)'. È tutto uguale? – KkZz

Problemi correlati