मैं कुछ तरीकों एक अंतर्निहित पैरामीटर लेने के साथ एक वर्ग को परिभाषित करने के लिए कोशिश कर रहा हूँ:कैसे श्रेणी स्तर पर निहित मापदंडों के लिए डिफ़ॉल्ट मान प्रदान करने के लिए
object Greetings {
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
मैं किसी अन्य वर्ग से इस वर्ग का उपयोग
implicit val greetings = "hello" //> greetings : java.lang.String = hello
Greetings.say("loic") //> res0: String = hello loic
Greetings.say("loic")("hi") //> res1: String = hi loic
मेरी समस्या यह है कि यह केवल तभी काम करता है जब मैं अपनी ग्रीटिंग्स ऑब्जेक्ट के बाहर निहित वैल्यू को परिभाषित करता हूं। मैं अपने एपीआई (जैसे स्कैला संग्रह एपीआई) का उपयोग आसान बनाने के लिए, मेरी कक्षा के अंदर एक डिफ़ॉल्ट मूल्य के साथ, अंतर्निहित पैरामीटर के साथ विधियां प्रदान करने में सक्षम होना चाहता हूं।
तो मैं यह करने के लिए करना चाहते हैं, लेकिन यह काम नहीं कर रहा (अंतर्निहित मूल्य नहीं मिला):
object Greetings {
implicit val greetings = "hello"
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
और फिर
Greetings.say("loic")
Greetings.say("loic")("hi")
मैं जानता हूँ कि मैं (implicit greetings: String = "hello")
के साथ एक डिफ़ॉल्ट मान परिभाषित कर सकते हैं लेकिन अगर मैं कई विधियों को दोहराने से बचने के लिए कक्षा स्तर पर ऐसा करना चाहता हूं।
मुझे लगता है कि मुझे कुछ याद आ रही है क्योंकि मैंने देखा कि CanBuildFrom
List
कक्षा के अंदर परिभाषित किया गया है, उदाहरण के लिए।
class Greetings(implicit val greetings: String = "hello") {
def say(name: String): String = greetings + " " + name
}
इस तरह मैं उनका डिफ़ॉल्ट मान और इसे ओवरराइड करता है, तो मैं चाहता हूँ कर सकते हैं::
यह अजीब नहीं है:
ठीक है, पर्याप्त शब्दाडंबर है, तो यहां आप यह कर सकते है। आम तौर पर आपकी कक्षा 'कक्षा ग्रीटिंग्स() (अंतर्निहित वैल ...)' – thatsIch