我正在使用scala 2.10。我對scala還是(非常)新的,我不能理解爲什麼我不能訪問print
方法trait Printer[T]
中的Person
案例類的name
字段。伴隨物體的通用性狀
這是示例代碼: 它打印出 Person(Mark) Person(Will)
// Model
abstract class BaseModel[T] {
def all: List[T]
}
case class Person(name: String)
object Person extends BaseModel[Person] {
val people = Set(Person("Mark"), Person("Will"))
def all = people.toList.sortBy(_.name)
}
// Controller
trait Printer[T] {
val model: BaseModel[T]
def print = model.all.foreach { p =>
// p.name gives error "value name is not a member of type parameter T"
println(p)
}
}
object PersonPrinter extends Printer[Person] {
val model = Person
}
// Call
object MyApp extends App {
PersonPrinter.print
}
'p'是不受約束的'T',不'Person'。你沒有說'T'有'名字'。 –
我怎麼能說這是一個人在這種情況下? – Akash
將'print'方法放入'PersonPrinter'中。 – sjrd