2011-02-02 17 views
6

मैं स्ट्रिंग क्लास को एक स्ट्रिंग से यूआरएल स्लग बनाने के लिए एक विधि के साथ विस्तारित करना चाहता हूं। मुझे यहां एक लिंक मिला है जो दिखाता है कि आप एक्सटेंशन को अपने पैकेज में कैसे स्थानांतरित कर सकते हैं:फारो स्मॉलटॉक क्लास व्यवहार का विस्तार करने का सबसे अच्छा तरीका?

Smalltalk Daily 07/13/10: Extending Behavior II

हालांकि, मुझे फारो स्मॉलटॉक में "पैकेज में स्थानांतरित करें" विकल्प नहीं मिल रहा है। क्या सिर्फ नई विधि के साथ कोर क्लास का विस्तार करना ठीक है, या क्या कोई बेहतर तरीका है?

उत्तर

8

Pharo या स्क्वीक में *mypackage नामक एक विधि श्रेणी में MyPackage के लिए विस्तार तरीकों डाल (या आप और वर्णनात्मक *mypackage-slug होने के लिए चाहते हैं)।

इन श्रेणियों में तरीकों MyPackage पैकेज के लिए स्वचालित रूप से संबंध रखते हैं

8

(देखने के Monticello बिंदु से कम से कम) "यह ठीक है बस नई विधि के साथ मुख्य वर्ग का विस्तार करने के लिए, या वहाँ एक है बेहतर तरीका?"

इस निर्णय के लिए ट्रेडऑफ हैं। वास्तव में, फारो को हाल ही में स्ट्रिंग >> asUrl था, जब it was removed as part of cleaning the system। एक तरफ, इसे कुछ लोगों द्वारा खराब शैली माना जाता है (केंट बेक के सर्वोत्तम व्यवहार देखें) उन वस्तुओं के बीच रूपांतरण विधियां हैं जिनके समान प्रोटोकॉल नहीं हैं (अर्थात् समान हैं)। इसके अतिरिक्त, इससे ब्लूटेड कोर क्लासेस (स्ट्रिंग और ऑब्जेक्ट) की ओर जाता है। हालांकि, आपके अपने आवेदन में, इन कारकों को संतुलित करने का एक अच्छा कारण हो सकता है, और चूंकि आप इसे अपने ऐप से पैकेजिंग कर रहे हैं, न कि सिस्टम के साथ, रॉक आउट।