我是一个初学Swift和一般编程的初学者。我已经想出了一种基于不同年龄段编码具有不同平均值(M)和标准差(SD)值的z分数计算器的方法。但是,我将在我正在尝试构建的应用程序中重复使用该代码,并且我不想养成不良习惯,所以我希望得到一些关于是否会有更好/更多的反馈有效的方式来构造这个。我确信这只是看起来很明显,但基本上是用户输入的年龄,被分配到一个“年龄段”,他们在测验中的分数(这里没有编码)被转换为z分数,基于M和SD数据特定于他们的年龄组。任何意见或反馈将不胜感激。有没有一种更有效的方法来构建Swift中基于年龄组的z分数计算?
var age:(Int)!
var ageClass:(String)!
var TestScore: (Double)!
age = 63
TestScore = 28
if (age <= 17) {ageClass = "ACInvalid"}
else if (age <= 35) {ageClass = "AC1"}
else if (age <= 50) {ageClass = "AC2"}
else if (age <= 60) {ageClass = "AC3"}
else if (age <= 70) {ageClass = "AC4"}
else if (age <= 80) {ageClass = "AC5"}
else if (age <= 109) {ageClass = "AC6"}
else {ageClass = "ACInvalid"}
//screen for ACInvalid
if (ageClass == "ACInvalid") {"Invalid Age Range"}
else {
let TestScoreM: [String:Double] = ["AC1": 35.7, "AC2": 33.5, "AC3": 31.2, "AC4":
29.4, "AC5": 26.1, "AC6": 22.1]
let TestScoreSD: [String:Double] = ["AC1": 4.1, "AC2": 4.7, "AC3": 5.3, "AC4": 6.4,
"AC5": 8.1, "AC6": 9.7]
var TestScoreZ = (TestScore - TestScoreM[ageClass]!)/TestScoreSD[ageClass]!
}
没有必要使用隐式展开自选您的变量(或在这种情况下,可变的变量)。只要说,例如'let age = 63','let testScore = 28.0','let age:String'(你可以推迟常量的初始化)。 – Hamish