class 或用于提取数学的结构 (Swift)

class or struct for extracting maths (Swift)

大家好,我是编程的新手,它正在变成一种使命。

我正在尝试创建一个 class 具有进行一些基本数学计算的功能。但是,我仍在学习如何提取新值,并且可能在我的 class/func 中传递或传递给另一个值。

这是我目前所掌握的

class fuel {
var rate = 3.7
var laps: Double = 13.0
var totalFuel: Double

init (rate: Double, laps: Double, totalFuel: Double){
    self.rate = rate
    self.laps = laps
    self.totalFuel = totalFuel

    }
func fuelMaths (fuel: Double) -> Double {
    self.totalFuel = (rate * Double(laps))
    print(self.totalFuel)

    }

} fuelMaths(self.totalFuel)

我在调用 "fuelMaths" 时收到未解决的标识符错误,或者我的意思是创建一个结构?

提前致谢。

关于 class 与 struct,这似乎是一个更好的选择,因为它只包含一些存储属性,这些属性都是值类型。

即便如此,还是有以下问题:

1) 您的 fuelMaths 实例方法没有返回值。您的实施应类似于:

func fuelMaths(fuel:Double) -> Double {
    // "someValue" contains your result
    return someValue
}

2) 出现未解析标识符错误的原因是您需要先声明 fuel 的实例,然后在该实例上调用 fuelMaths

// someRate, someLaps, someTotal, and someFuelValue previously defined

let myFuel = fuel(rate: someRate, laps: someLaps, totalFuel: someTotal)
let myReturnedValue = myFuel.fuelMaths(someFuelValue)

最后,totalFuel 似乎是计算 属性 而不是存储 属性 的一个很好的候选者。这消除了您对 fuelMaths 方法的需要。只需执行计算 属性 主体内的 fuelMaths 中的计算即可。这也意味着您的初始化程序只需要为 ratelaps:

提供两个参数
var totalFuel: Double {
    return rate * laps
}

init(rate:Double, laps:Double) { //... }

还有一件事,惯例是将您的 classes 和结构的名称大写。

编辑:

您的代码的 class 版本可能如下所示:

class Fuel {
    var rate = 3.7  // default value tells compiler this is a Double
    var laps = 13.0
    var totalFuel: Double {
        return rate * laps
    }

    init(rate:Double, laps:Double) {
        self.rate = rate
        self.laps = laps
    }
}

您的代码的结构版本可能如下所示(请注意,与 class 不同,它不需要您显式定义初始值设定项):

struct Fuel {
    var rate = 3.7
    var laps = 13.0
    var totalFuel: Double {
        return rate * laps
    }
}