我一直在研究封装的概念,发现了一些关于这个主题的不错的线索,比如这个和这个。但我还没能找到一个具体问题的答案。我将使用Swift中的一个示例。
假设你有一个RoadTrip类型的对象:
class RoadTrip() {
private var duration: Double
private var totalMiles: Double
private var gallonsOfFuel: Double
var averageMilesPerGallon: Double
}
现在让我们假设应用程序将计算AverageFileSpergallon
,这是唯一的公共属性:
func calculateAverageMilePerGallon() -> Double {
let mpg = totalMiles / gallonsOfFuel
return mpg
}
每加仑平均英里数的计算是RoadTrip对象执行和更新其averageMilesPerGallon
的私有方法,还是可以接受由单独实用程序类中的另一个方法执行计算,然后更新RoadTrip的averageMilesPerGallon
属性对象是否使用将设置值的mutator方法?
编辑:这是我的一个类,包含我的应用程序的基本计算。我是根据我在iTunes上的斯坦福课程中学到的东西来处理这个问题的,但我开始想,在我的案例中,我应该把大部分内容转移到我的LiftEvent课程中:
infix operator ^^ { }
func ^^ (radix: Double, power: Double) -> Double {
return Double(pow(Double(radix), Double(power)))
}
class CalculatorBrain: NSObject {
var weightLifted: Double?
var repetitions: Double?
var oneRepMax: Double?
let dataManager = LiftEventDataManager()
func calculateOneRepMax(weightLifted: Double, repetitions: Int ) -> Double {
let preferredFormulaID = UserDefaultsManager.sharedInstance.preferredFormula!
let formulas = dataManager.fetchSelectableFormulas()
let formulaName = formulas[preferredFormulaID].formulaName
switch formulaName {
case "Epley":
oneRepMax = weightLifted * (1 + Double(repetitions)/30.0)
return oneRepMax!
case "Baechle":
oneRepMax = weightLifted * (36/(37 - Double(repetitions)))
return oneRepMax!
case "Brzychi":
oneRepMax = weightLifted * ( 1 + ( 0.033 * Double(repetitions)))
return oneRepMax!
case "Lander":
oneRepMax = 100 * weightLifted / (101.3 - (2.67123 * Double(repetitions)))
return oneRepMax!
case "Lombardi":
oneRepMax = weightLifted * (Double(repetitions) ^^ 0.10)
return oneRepMax!
case "Mayhew":
oneRepMax = 100 * weightLifted / (52.2 + (41.9 * (2.71828 ^^ (-0.055 * Double(repetitions)))))
return oneRepMax!
case "O'Conner":
oneRepMax = weightLifted * (1 + 0.025 * Double(repetithtml" target="_blank">ions))
return oneRepMax!
default:
return 0.0
}
}
private func calculatePercentOfWeight(maxWeight: Double, percent: Double) -> Double {
return maxWeight * percent
}
func calculateWeightPercentages(maxWeight: String) -> [Int: Double] {
let weightPercentages = [1.0, 0.95, 0.90, 0.85, 0.80, 0.75, 0.70, 0.65, 0.60, 0.55, 0.50, 0.45, 0.40, 0.35, 0.30, 0.25]
var percentages = [Int: Double]()
for percent in weightPercentages {
let integerPercent = Int(percent * 100)
percentages[integerPercent] = calculatePercentOfWeight(Double(maxWeight)!, percent: percent)
}
return percentages
}
func convertBetweenUnits(fromUnit: Int, toUnit: Int, value: Double) -> Double {
let units = dataManager.fetchUnits()
let from = units[fromUnit].conversionRatio as Double
let to = units[toUnit].conversionRatio as Double
let result = Double(value * to / from)
return result
}
}
我认为这是计算属性的理想用例:
class RoadTrip {
private let duration: Double
private let totalMiles: Double
private let gallonsOfFuel: Double
private var averageMilesPerGallon: Double {
return totalMiles / gallonsOfFuel
}
}
我正在更改特定信封的签名人,方法是使用以下代码更新收件人的签名,该代码工作正常 是否可以使用rest API获取故障状态信封并更新收件人电子邮件。 我想我们可以得到失败的信封,并用有效的收件人电子邮件更新收件人的
我有一个quarkus应用程序,当我用下面的命令构建应用程序时,进程第一次开始完美地编译quarkus:dev-DskipTests=true 成功启动的日志: 但是当我停下来重新开始这个过程时,过程并没有开始... 启动失败的日志: 当我尝试重新启动机器,然后启动quarkus服务时,它会再次工作。 pom。xml: 如果有人遇到过类似的行为,请告诉我,这可能是什么根源。
本文向大家介绍浅析vue cli3 封装Svgicon组件正确姿势(推荐),包括了浅析vue cli3 封装Svgicon组件正确姿势(推荐)的使用技巧和注意事项,需要的朋友参考一下 vue cli3 手把手教学封装Svgicon组件 第一步:在src文件下新建一个放置svg文件的文件夹 第二步:在components文件下新建一个Svg组件 这是一个 文件夹 专门用来存放项目里面需要使用的svg
我正在将spring security应用于一个web应用程序,其中我需要执行以下操作: > 限制某些角色/权限对某些页面的访问 根据用户访问权限和用户角色限制对某些数据的访问(例如,管理员可以查看所有数据,用户只能查看管理员授予用户访问权限的数据) 允许根据用户拥有的访问权限对数据执行操作(读取、 管理等) 所以,我在想: 限制某些角色/权限对某些页面的访问- 现在,这是我想出了一个设置,但想知
有人可以帮我吗? 我的应用程序,在Facebook上注册并设置为“实时”,有一个应用程序ID,一个密钥和一个令牌客户端。在我的应用程序中,用户A在脸书上执行登录,我得到IdA(这是应用程序范围的)。在我的应用程序中,用户B在Facebook上执行登录,我得到的IdB仍然是应用程序范围的。 现在,每当我尝试获取用户配置文件图片时,都会出现错误。这是我为用户A尝试的,用户B也一样: https://g