我是一個初學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