[英]class or struct for extracting maths (Swift)
大家好,我对编程非常陌生,这正变成一项使命。
我正在尝试创建一个具有函数的类来进行一些基本的数学运算。 但是,我仍在学习如何提取新值,并且可以在类/函数中传递或传递给另一个。
这是我到目前为止所拥有的
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”时出现无法解析的标识符错误,或者我的意思是创建结构吗?
提前致谢。
对于类与结构,这似乎是一个更好的选择,因为它只包含一些都是值类型的存储属性。
即便如此,这里还是有问题:
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
中的计算即可。 这也意味着您的初始化程序只需要为rate
和laps
提供两个参数:
var totalFuel: Double {
return rate * laps
}
init(rate:Double, laps:Double) { //... }
还有一件事,约定是将类和结构的名称大写。
编辑:
您的代码的类版本可能如下所示:
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
}
}
代码的结构版本可能如下所示(注意,与类不同,它不需要您显式定义初始化程序):
struct Fuel {
var rate = 3.7
var laps = 13.0
var totalFuel: Double {
return rate * laps
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.