簡體   English   中英

Scala:返回構建器模式的運行時對象類型

[英]Scala: Return run-time object type for builder pattern

因此,我正在嘗試為Scala實現版本的Builder模式 ,而我的返回類型遇到了一些麻煩。 這是我的問題:

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這樣的聲明成為可能?

基本上,您只需要說Car.setFuelConsumption不僅僅返回Car,而是返回自身的類型,如下所示:

def setFuelConsumption(con: Double): this.type = {
    fuelConsumption = con
    this
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM