2011-10-15 13 views
7

¿Hay alguna manera de agregar implícitamente métodos en el objeto scala?Adición de métodos de objetos implícitamente

UPD: Por ejemplo, la biblioteca Scala sin filtrar tiene objeto singleton Body que contiene métodos Body.string(req: HttpRequest) y Body.bytes(req: HttpRequest) para el cuerpo leer de petición HTTP. Por lo tanto, quiero leer el cuerpo en mis objetos de dominio, como Body.cars(req:HttpRequest).

+0

favor explicar mejor lo que quiere. –

Respuesta

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

Es lo que necesito. Gracias. – KkZz

+1

No lo obtuve ... ¿Es este el archivo fuente completo? Me gusta ObjB.scala? ¿O es parte de alguna implementación de método? Intenté poner esto en mi código y no funcionó ... –

+0

@EduardoBezerra Actualicé la respuesta para trabajar con 2.11.7, pero no uso Scala hoy en día, por lo que cualquier sugerencia es bienvenida. – elbowich

11

¿Qué quiere decir por implícitamente agregando métodos? ¿Tiene el código snipper responder a su pregunta:

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

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

'" Foo "' es una instancia de clase, lo que quiero decir es agregar métodos en un objeto singleton, algo así como 'Math.myMethod (1)'. ¿Es todo lo mismo? – KkZz

Cuestiones relacionadas