के रूप में ले रही है, इसलिए मैं एक सामान्य पैरा क्लास के साथ एक सामान्य पैरा क्लास से प्राप्त एक साथी ऑब्जेक्ट के साथ एक क्लास टाइप पैरामीटर के रूप में एक सामान्य विशेषता लेना चाहता हूं और दोनों साथी ऑब्जेक्ट को संदर्भित करता हूं और कक्षा ही तो,जेनेरिक विशेषता एक वर्ग और उसके साथी ऑब्जेक्ट को एक प्रकार पैरामीटर
abstract class BaseModel[T] {
def all: Seq[T]
}
case class Customer(email: String, password: String)
object Customer extends BaseModel[Customer]
// This trait is my issue
trait BaseCrud[T] {
def table[T](f: T => String): String = {
T.all.map(f _).mkString("")
}
}
object Controller with BaseCrud {
def foo = table(_.email)
}
मुझे लगता है कि ऐसी विशेषता है जो करीब थे करने के लिए कुछ समाधान था, लेकिन मैं इसे नीचे आसुत तो आप देख सकते हैं कि मैं क्या करने की कोशिश कर रहा हूँ।
धन्यवाद
अद्यतन
तो मैं नीचे फ्रैंक से समाधान के साथ चला गया, लेकिन मैं अपने प्रारंभिक पहेली को हल करने का प्रबंधन किया था। हालांकि, इस मामले में समाधान थोड़ा बदसूरत था, मैं इसे पूर्णता के लिए यहां शामिल करूंगा।
abstract class BaseModel[T] {
def all: Seq[T] = Seq()
}
case class Customer(email: String, password: String)
object Customer extends BaseModel[Customer]
trait BaseCrud[T, U <: BaseModel[T]] {
def table(f: T => String)(implicit obj: U): String = {
obj.all.map(f(_)).mkString("")
}
}
object Controller extends BaseCrud[Customer, Customer.type] {
implicit val model = Customer
def foo = table(_.email)
}
तो प्रकार पैरामीटर BaseCrud को बदल दिया है और निहित BaseCrud.table को जोड़ा गया और Controller.model में लागू किया गया था। मैंने अपने सभी टाइपो को भी तय किया। मुझे यह दिलचस्प ग्राहक मिला। टाइप साथी वस्तु का प्रकार प्रतीत होता है।
धन्यवाद काम करता है, लेकिन मैं कोड के अन्य भागों के लिए ग्राहक वस्तु में मिलाया मेरी BaseModel [टी] की जरूरत है। लेकिन मैंने बेसक्रॉड [टी] से नियंत्रक तक पहुंचने के लिए इस तकनीक को उसी कोड में उपयोग करने के लिए रखा है। – gimo4000