में केस क्लास द्वारा विस्तारित करने के लिए एक विशेषता को परिभाषित करें मेरे पास कुछ केस क्लास हैं जिनकी विधि tupled
है जो इसके साथी ऑब्जेक्ट में परिभाषित है। जैसा कि इसे साथी वस्तुओं में नीचे दिए गए कोड से देखा जा सकता है, यह केवल कोड डुप्लिकेशन है।स्केल
case class Book(id: Int, isbn: String, name: String)
object Book {
def tupled = (Book.apply _).tupled // Duplication
}
case class Author(id: Int, name: String)
object Author {
def tupled = (Author.apply _).tupled // Duplication
}
एक और सवाल (can a scala self type enforce a case class type) से ऐसा प्रतीत होता है कि हम एक विशेषता का आत्म प्रकार लागू नहीं कर सकते एक मामले वर्ग होने के लिए।
क्या कोई विशेषता परिभाषित करने का कोई तरीका है (Tupled
कहें) जिसे निम्नलिखित के रूप में लागू किया जा सकता है?
// What would be value of ???
trait Tupled {
self: ??? =>
def tupled = (self.apply _).tupled
}
// Such that I can replace tupled definition with Trait
object Book extends Tupled {
}
एक साइड नोट के रूप में, 'सेप्पल' इस विधि के लिए एक बेहतर नाम हो सकता है-यह सच है कि आप 'लागू' को जोड़ रहे हैं, लेकिन परिणाम 'tupled' बनाता है, रूपांतरण की तरह ध्वनि है _to_ इसके बजाय एक tuple है अभी से_। –
बहुत बहुत धन्यवाद !!! – TheKojuEffect
@TravisBrown मैं 1 पैरामीटर के वर्ग वर्गों के साथ एक ही प्रभाव कैसे प्राप्त कर सकता हूं? – vicaba