2011-10-15 5 views
7

क्या स्केल ऑब्जेक्ट में अंतर्निहित तरीके से जोड़ने का कोई तरीका है?ऑब्जेक्ट विधियों को शामिल करना

Upd: उदाहरण के लिए, अनफिल्टर्ड स्केला पुस्तकालय सिंगलटन वस्तु Body जो http अनुरोध से पढ़ने के शरीर के लिए Body.string(req: HttpRequest) और Body.bytes(req: HttpRequest) तरीकों में शामिल किया है। इसलिए, मैं अपने डोमेन ऑब्जेक्ट्स में 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

'" फू "' एक वर्ग उदाहरण है, मैं क्या मतलब है सिंगलटन वस्तु में तरीकों, 'Math.myMethod की तरह कुछ जोड़ रहा है (1)'। क्या यह सब वही है? – KkZz

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^