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