Мой фон на C ++ / C, и я пытаюсь выучить scala. Я изо всех сил пытаюсь понять, как метод toString признака переопределяет класс case, полученный из признака. Конечно, метод toString класса case по умолчанию должен перевесить черту? Я что-то упускаю очевидное?
Код
trait Computer {
def ram: String
def hdd: String
def cpu: String
override def toString = "RAM= " + ram + ", HDD=" + hdd + ", CPU=" + cpu
}
private case class PC(ram: String, hdd: String, cpu: String) extends Computer
private case class Server(ram: String, hdd: String, cpu: String) extends Computer
object ComputerFactory {
def apply(compType: String, ram: String, hdd: String, cpu: String) = compType.toUpperCase match {
case "PC" => PC(ram, hdd, cpu)
case "SERVER" => Server(ram, hdd, cpu)
}
}
val pc = ComputerFactory("pc", "2 GB", "500 GB", "2.4 GHz");
val server = ComputerFactory("server", "16 GB", "1 TB", "2.9 GHz");
println("Factory PC Config::" + pc);
println("Factory Server Config::" + server);