let smallestgrade = (min(musicgrade, bildgrade, matematicsgrade)) (Dosent work)
等級的替代方案是: 「A,B,C,d,E,F」如何獲取字符串的最小值和最大值?
F是最小的值,並且具有0
A的值是最大的值,並且具有值爲20
如何挑選出最小的值? 我可以做這樣的事情:
A = 20
B = 17.5
C = 15.0
d = 12.5
E = 10
F = 0
??
let smallestgrade = (min(musicgrade, bildgrade, matematicsgrade)) (Dosent work)
等級的替代方案是: 「A,B,C,d,E,F」如何獲取字符串的最小值和最大值?
F是最小的值,並且具有0
A的值是最大的值,並且具有值爲20
如何挑選出最小的值? 我可以做這樣的事情:
A = 20
B = 17.5
C = 15.0
d = 12.5
E = 10
F = 0
??
也許你想這樣的事情:
let gradeValues = ["A" : 20, "B" : 17.5, "C" : 15.0, "D" : 12.5, "E" : 10, "F" : 0]
let grades = ["B", "A", "C", "A", "B"]
let minim = grades.min {gradeValues[$0]! < gradeValues[$1]!} // "C"
'let minim = grades.max()'恰好產生相同的結果:) –
@MartinR當然,但關鍵詞是「碰巧」。如果我們引入「A +」和「C-」選項會怎樣?如果,如果...怎麼辦?我可以繼續。事實是,問題是關於基於字母的_symbols_和它們的數字_meanings_之間的對應關係的需要,並且該對應關係就是我的解決方案所展現的。 – matt
你當然是對的 - 我的評論只適用於問題中提到的特殊情況。 –
簡單,類型安全的解決方案:
enum Grade : Double {
case A = 20.0
case B = 17.5
case C = 15.0
case D = 12.5
case E = 10.0
case F = 0.0
}
extension Grade : Comparable {
static func <(lhs: Grade, rhs: Grade) -> Bool {
return lhs.rawValue < rhs.rawValue
}
}
let musicGrade = Grade.A
let bildGrade = Grade.E
let mathGrade = Grade.D
let worstGrade = [musicGrade, bildGrade, mathGrade].min()
print(worstGrade)
這看起來像某種功課/轉讓的,如果這是你應該做的一些情況更多的研究。這是一個相當容易實現的事情。你已經試過了什麼? – Scriptable
它如何「不起作用」?什麼是投入和預期產出? - 你*可以*調用min()和max()的字符串列表... –
不是一個家庭作業,只是我編碼 – theswed