2012-02-22 12 views
6

इसे लागू करने के दो अलग-अलग तरीके हैं।स्कैला में समृद्ध-पुस्तकालय का उपयोग करने का सबसे अच्छा तरीका क्या है?

एक और लघु

implicit def toR1(s:String) = new { def getLength = s.length)} 

दूसरा है और अधिक लंबे समय तक

class R2(s:String){def getLength2 = s.length)} 
implicit def toR2(s:String) = new R2(s) 

कौन सा बेहतर है?

+4

'निहित वर्ग R3 (रों: स्ट्रिंग) {def getLength = s.length}' :) मैं वास्तव में आशा है कि यह में शामिल किया जाएगा स्कैला 2.10: http://docs.scala-lang.org/sips/pending/implicit-classes.html – tenshi

+2

एक संभावित डुप्लिकेट: [अंतर्निहित तरीकों के लिए मध्यवर्ती प्रकारों को कैसे कार्यान्वित करें?] (Http://stackoverflow.com/questions/5220359/कैसे करने वाली लागू-मध्यवर्ती-प्रकार के लिए निहित-तरीकों/5,220,725)। टीएल; दूसरा दूसरा बेहतर प्रदर्शन-वार है क्योंकि पहला तरीका हूड –

+0

स्केल 2.10 में निहित कक्षा _are_ के तहत प्रतिबिंब का उपयोग करता है, इसलिए शायद इस प्रश्न का वर्तमान उत्तर केवल अप्रचलित है। – matanster

उत्तर

11

पहला संस्करण structural type का उपयोग करता है। यह छोटे और पठनीय कोड लिखना संभव बनाता है, लेकिन संरचनात्मक प्रकारों का नुकसान यह है कि जब आप संरचनात्मक प्रकार में विधि को कॉल करते हैं तो प्रतिबिंब का उपयोग रनटाइम पर किया जाता है। प्रतिबिंब के माध्यम से एक विधि को कॉल करना एक विधि को सीधे कॉल करने से धीमा है।

अधिक जानकारी इस ब्लॉग पोस्ट (मेरे द्वारा लिखित) में हैं: Avoid structural types when pimping libraries

+0

@ एंडी धन्यवाद, लिंक को बदल दिया। – Jesper

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

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