Scala抽象类函数调用
我是scala的新手,如果这个问题很愚蠢,我会提前道歉。我正在浏览这段scala代码,我不知道下面的代码是如何工作的Scala抽象类函数调用,scala,Scala,我是scala的新手,如果这个问题很愚蠢,我会提前道歉。我正在浏览这段scala代码,我不知道下面的代码是如何工作的 abstract class ClusterSimulatorDesc(val runTime: Double) { def newSimulator(constantThinkTim: Double, perTaskThinkTime: Double, blackListPercent: Double,
abstract class ClusterSimulatorDesc(val runTime: Double) {
def newSimulator(constantThinkTim: Double,
perTaskThinkTime: Double,
blackListPercent: Double,
schedulerWorkloadsToSweepOver: Map[String, Seq[String]],
workloadToSchedulerMap: Map[String, Seq[String]],
cellStateDesc: CellStateDesc,
workloads: Seq[Workload],
prefillWorkloads: Seq[Workload],
logging: Boolean = false): ClusterSimulator
}
class ClusterSimulator(val cellState: CellState,
val schedulers: Map[String, Scheduler],
val workloadToSchedulerMap: Map[String, Seq[String]],
val workloads: Seq[Workload],
prefillWorkloads: Seq[Workload],
logging: Boolean = false,
monitorUtilization: Boolean = true,
monitoringPeriod: Double = 1.0)
extends Simulator(logging) {
现在,如果我有一个函数调用,如:-
simulatorDesc: ClusterSimulatorDesc
val simulator =
simulatorDesc.newSimulator(constantThinkTime,
perTaskThinkTime,
blackListPercent,
schedulerWorkloadsToSweepOver,
schedulerWorkloadMap,
workloadDesc.cellStateDesc,
workloads,
prefillWorkloads,
logging)
现在我的问题是,抽象类声明末尾的“ClusterSimulator”是做什么的?
而且,考虑到“newSimulator”函数是在抽象类中声明的,它是如何调用的
def newSimulator(....): ClusterSimulator
调用方法newSimulator()
时,返回ClusterSimulator
的实例
simulatorDesc: ClusterSimulatorDesc
ClusterSimulatorDesc
无法实例化,因为它是抽象的,但是可以实例化扩展ClusterSimulatorDesc
的类,并且该类的实例也是ClusterSimulatorDesc
的实例,并且可以调用其方法
调用方法newSimulator()
时,返回ClusterSimulator
的实例
simulatorDesc: ClusterSimulatorDesc
ClusterSimulatorDesc
是抽象的,因此无法实例化,但是可以实例化扩展了ClusterSimulatorDesc
的类,该类的实例也是ClusterSimulatorDesc
的实例,并且可以调用其方法。您可以阅读继承(OOP概念)。以下是简要信息:。更详细:您可以阅读有关继承(OOP概念)的内容。以下是简要信息:。更详细: