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
中的计算即可。这也意味着您的初始化程序只需要为 rate
和 laps
:
提供两个参数
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
}
}
大家好,我是编程的新手,它正在变成一种使命。
我正在尝试创建一个 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
中的计算即可。这也意味着您的初始化程序只需要为 rate
和 laps
:
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
}
}