1
說我有這樣的代碼:以任何參數對象作爲參數傳遞給類構造函數
abstract class Animal[T <: Animal[T]] {
def mateWith(that: T)
}
class Cow extends Animal[Cow] {
override def mateWith(that: Cow) { println("cow") }
}
class Dog extends Animal[Dog] {
override def mateWith(that: Dog) { println("dog") }
}
我想寫的東西是這樣的:
class Caretaker (val pet: Animal) {
...
}
但這是無效的,因爲動物需要參數化。我可以通過參數看守解決這個問題:
class Caretaker[T <: Animal[T]](val pet: Animal[T]) {
...
}
,但是這是我在做什麼真的不必要。
有沒有更好的方法來做到這一點?
是什麼下劃線意味着成爲重要?任何有效的參數化類型的動物? – 2012-04-19 21:42:10
就我對scala的瞭解而言,下劃線是一個通配符,在本質上意味着「我不在乎這裏發生了什麼」。對Animal類的參數化的限制會限制哪些類型可以有效地傳遞給Caretaker類。 – Steven 2012-04-19 21:45:25