0
Итак, я пытаюсь реализовать версию для Builder pattern для Scala, и у меня возникают проблемы с моими возвращаемыми типами. Вот моя проблема:Scala: Возвращает тип объекта времени выполнения для шаблона построителя
abstract class Car() {
protected var fuelConsumption = 10.0
def setFuelConsumption(con: Double): Car = {
fuelConsumption = con
this
}
}
trait HasHorn extends Car {
protected var hornSound = "Toot!"
def setHornSound(sound: String): HasHorn = {
hornSound = sound
this
}
}
class ModelT extends Car with HasHorn
// I can do this:
val aCar = new ModelT().setHornSound("Beep!").setFuelConsumption(5.0)
// But not this, because setFuelConsumption returns a Car
val bCar = new ModelT().setFuelConsumption(12.0).setHornSound("Beep!")
Так что мой вопрос: Как я могу вернуть тип выполнения объекта, так что декларация как BCAR возможно?
Спасибо! Более подробную информацию можно найти в [this] (http://stackoverflow.com/questions/4313139/how-to-use-scalas-this-typing-abstract-types-etc-to-implement-a-self-type) ответ – Bar