我一直在“AnalyzeInput”类的return语句中收到错误,“无法使用类型为'($ T18,Double)'的参数列表调用'*',这没有任何意义,因为所有四个变量在方法头中定义为Double。以下是相关的两个类,删除了不相关的代码:
class AnalyzeInput {
// Constructor, initialize InputInfo, add information to it etc etc
var remainingToAnalyze: String
var information: InputInfo
func findOutput() {
return information.getVolumeAmount() * information.getMeasurement().getMiliplier() * information.getConcentration() * information.getCompoundMolarMass()
}
}
class InputInfo {
var volumeAmount: Double = 0
var measurementType: Measurement = Measurement(short: "null", singular: "null", plural: "null", multiplier: 0)
var concentration: Double = 0
var compoundMolarMass: Double = 0
init () {
}
func setVolumeAmount(volumeAmount: Double) {
self.volumeAmount = volumeAmount
}
func setMeasurementType(measurement: Measurement) {
self.measurementType = measurement
}
func setConcentration(concentration: Double) {
self.concentration = concentration
}
func setCompound(compoundMolarMass: Double) {
self.compoundMolarMass = compoundMolarMass
}
func getVolumeAmount() -> Double {
return volumeAmount
}
func getMeasurement() -> Measurement {
return measurementType
}
func getConcentration() -> Double {
return concentration
}
func getCompoundMolarMass() -> Double {
return compoundMolarMass
}
}
如何修复错误?
答案 0 :(得分:2)
findOutput的返回类型不是Double。如果要从中返回double,则需要正确声明返回类型。此外,您不需要在第二个类中使用所有这些getter / setter方法 - 您只需使用点运算符来访问属性。最后,“乘数”在您的回访中拼写错误。所以:
func findOutput() -> Double {
return information.volumeAmount * information.measurement.multiplier * information.concentration * information.compoundMolarMass
}