Tôi hiện đang tự hỏi về việc tạo một đối tượng/lớp/đặc điểm phù hợp với một đặc điểm cho nhiều tham số kiểu. Hãy nói rằng tôi cóThành phần có cùng đặc điểm, nhưng các tham số kiểu khác nhau
trait Dependent[T]{
def observeCritereaChanged(oldValue:T, newValue:T):Unit
}
Tôi muốn để có thể xác định một số đặc điểm mà thực hiện phụ thuộc cho hai tham số kiểu khác nhau, ví dụ
trait IntStrDependent extends Dependent[Int] with Dependent[String]
Vì vậy mà trường hợp của IntStrDependent
đặc điểm của tôi sẽ phải xác định số observeCritereaChanged
cho cả hai loại:
class MyDependent extends IntStrDependent {
def observeCritereaChanged(oldValue:Int, newValue:Int) = //...
def observeCritereaChanged(oldValue:String, newValue:String) = //...
}
Cho đến nay, các nỗ lực của tôi đã gặp phải lỗi biên dịch khi thử để tạo ra các đặc điểm IntStrDependent
:
scala> trait IntStrDependent extends Dependent[Int] with Dependent[String]
<console>:8: error: illegal inheritance;
self-type IntStrDependent does not conform to Dependent[Int]'s selftype Dependent[Int]
trait IntStrDependent extends Dependent[Int] with Dependent[String]
^
<console>:8: error: illegal inheritance;
self-type IntStrDependent does not conform to Dependent[String]'s selftype Dependent[String]
trait IntStrDependent extends Dependent[Int] with Dependent[String]
^
Vì vậy, câu hỏi của tôi là: Có cách nào để làm những gì tôi đang cố gắng để làm gì (nếu như vậy, như thế nào) hoặc đây là một nguyên nhân bị mất vì Scala là không được xây dựng để làm điều này?
Đó là những gì tôi thường làm. –
Đọc thú vị mà bạn đã liên kết. Điều đó chắc chắn trả lời câu hỏi của tôi, nhưng tôi nghĩ rằng tôi sẽ đi với cách tiếp cận của bạn: Chuyển từ một 'là a' thành một mối quan hệ' có một 'sẽ ổn cho ứng dụng của tôi – Dylan