में लागू अमूर्त वर्ग कन्स्ट्रक्टर पैरामीटर और विरासत मैं स्कैला के लिए बिल्कुल नया हूं और निहित रूपांतरणों और मानकों को सीखने और समझने की कोशिश कर रहा हूं और मुझे एक परिदृश्य का सामना करना पड़ा है जो मुझे भ्रमित लगता है।स्कैला
संदर्भ के लिए, मैं एक अक्का आवेदन में निर्भरता इंजेक्शन करने के लिए स्काल्डी का उपयोग कर रहा हूं और कई इंजेक्शन योग्य अभिनेताओं को एक अमूर्त वर्ग से प्राप्त करना चाहता हूं। मेरा मानना है कि मैं अमूर्त वर्ग को एक विशेषता सटीक बनाने में असमर्थ हूं क्योंकि हमें ढांचे का लाभ उठाने के लिए एक निर्माता तर्क के माध्यम से एक अंतर्निहित Injector
उपलब्ध कराने की आवश्यकता है।
एक बहुत ही काल्पनिक उदाहरण है कि व्यवहार है कि मैं देख रहा हूँ दर्शाती है इस प्रकार है:
class SecretSauce {}
abstract class Base(implicit secretSauce: SecretSauce) {}
class Concrete extends Base {}
object Example extends App {
... // Setup Actor system, etc, etc
implicit val secretSauce: SecretSauce = new SecretSauce()
}
मैं चीजों को काम करने के लिए, लेकिन इसके बजाय मैं एक संकलन त्रुटि मिलती है उम्मीद कर रहा था:
Unspecified value parameter secretSauce.
class Concrete extends Base {
^
मैं तो कंक्रीट वर्ग में अंतर्निहित पैरामीटर जोड़ें, जैसे चीजें काम करती हैं:
class Concrete(implicit secretSauce: SecretSauce) extends Base {}
मैं टी मेरे भ्रम को झुकाएं कि कैसे अंतर्निहित पैरामीटर काम करते हैं - ऐसी स्थितियों में जैसे कि मैं वर्णन कर रहा हूं, क्या उन्हें बाल वर्गों द्वारा विरासत में नहीं मिला है? क्या कोई व्यक्ति मेरे उदाहरण में क्या हो रहा है या मुझे संदर्भ में इंगित करता है जो चीजों को साफ़ करने में मदद कर सकता है?
धन्यवाद!
आह, मुझे लगता है कि नियमों का आसवन काफी मदद करता है। उस मामले में एक संकलन त्रुटि क्यों नहीं फेंक दी जाती है जहां ठोस वर्ग में निहित तर्क डुप्लिकेट किया जाता है? उदाहरण के लिए क्लास कंक्रीट (निहित गुप्त सॉस: सीक्रेटसाउस) बेस {} ' बढ़ाता है जिस तरह से मैंने इसे अपने कोड में सेट किया है, निहित मूल्य अभी भी दायरे में नहीं है और न ही यह एक साथी वस्तु में है, है ना? क्या यहां मेरी गुंजाइश की समझ है? – simonl
@ सिमोनल जब आप 'कंक्रीट' कन्स्ट्रक्टर को अंतर्निहित पैरामीटर जोड़ते हैं, तो वह अंतर्निहित माता-पिता कन्स्ट्रक्टर को कॉल के दायरे में होगा। कक्षा परिभाषाओं और रचनाकारों के लिए स्कैला का वाक्यविन्यास यह थोड़ा अनजान बनाता है, लेकिन यह काम करता है। –