2011-10-15 4 views
7

scala 객체에 메소드를 암시 적으로 추가하는 방법이 있습니까?암시 적으로 객체 메소드 추가

UPD : 예를 들어 는 필터링되지 않은 스칼라 라이브러리는 HTTP 요청에서 읽은 몸 방법을 Body.string(req: HttpRequest)Body.bytes(req: HttpRequest)을 포함 싱글 객체 Body 있습니다. 그래서, 도메인 객체 내에서 몸체를 읽을 것을 원합니다. Body.cars(req:HttpRequest).

+0

더 나은 당신이 원하는 것을 설명해주십시오 :이 코드 snipper은 귀하의 질문에 대답 않습니다. –

답변

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

내가 필요한거야. 감사. – KkZz

+1

나는 그것을 얻지 못했다 ... 이것은 전체 소스 파일인가? ObjB.scala처럼? 아니면이 메소드 구현의 일부입니까? 나는 이것을 코드에 넣어 봤는데 작동하지 않았다. ... –

+0

@EduardoBezerra 2.11.7에서 작동 할 수있는 답변을 업데이트했지만, 요즘에는 스칼라를 사용하지 않으므로 모든 제안을 환영한다. – elbowich

11

은 암시 적으로 방법을 추가하는 것을 의미합니까?

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

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

''Foo ''는 클래스 인스턴스입니다. 즉,'Math.myMethod (1)'과 같은 싱글 톤 객체에 메소드를 추가하는 것입니다. 그것은 모두 똑같은가요? – KkZz

관련 문제