Có cách nào để tạo phương thức luôn trả về loại của cùng một lớp được gọi là không?Loại hình này trong Scala
Hãy để tôi giải thích:
class Shape {
var mName: String = null
def named(name: String): Shape = {
mName = name
this
}
}
class Rectangle extends Shape {
override def named(name: String): Rectangle = {
super.named(name)
this
}
}
này hoạt động, nhưng có một cách để làm điều này mà không cần phải ghi đè lên named
chức năng trong tất cả các lớp con của tôi không? Tôi đang tìm một cái gì đó như thế này (không hoạt động):
class Shape {
var mName: String = null
def named(name: String): classOf[this] = { // Does not work but would be great
mName = name
this
}
}
class Rectangle extends Shape {
}
Bất kỳ ý tưởng nào? Hay là điều này không thể thực hiện được ?
Điều đáng nói đến là loại singleton không thể được sử dụng cho các trường hợp không phải là 'this'. – pedrofurla
@pderofurla: Có vẻ như nó có thể xảy ra với các kiểu phụ thuộc vào đường dẫn, nhưng tôi biết rất ít về các kiểu phụ thuộc vào đường dẫn trong Scala, và tôi thậm chí không chắc chắn liệu chúng có còn là thử nghiệm hay không. –
Tôi không nghĩ rằng nó liên quan đến các loại phụ thuộc vào đường dẫn. Và không, các kiểu phụ thuộc vào đường dẫn không phải là thử nghiệm. – pedrofurla