隐式添加对象方法

时间:2011-10-15 21:59:45

标签: scala object implicit

有没有办法在scala对象中隐式添加方法?

UPD: 例如,Unfiltered scala库具有单个对象Body,其中包含来自http请求的读取主体的方法Body.string(req: HttpRequest)Body.bytes(req: HttpRequest)。所以,我想在我的域对象中读取body,例如Body.cars(req:HttpRequest)

2 个答案:

答案 0 :(得分:17)

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)
    }
}

答案 1 :(得分:11)

隐式添加方法是什么意思?此代码段是否回答了您的问题:

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

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