У меня есть метод, который вычисляет новый счет.Приведенный ниже метод работает, но проблема в том, что сам код выглядит так, как будто его можно значительно очистить.Я просто не знаю, что было бы лучшим способом сделать это.Я присваиваю scoreCount
целое число в зависимости от filterString и перечисления individualScoreState
func calculateScore(count: Int, filterString: String, individualScoreState: IndividualScores) -> Int {
var scoreCount: Int = 0
var results = Results()
switch filterString {
case "ScoreA":
switch individualScoreState {
case .firstScore:
scoreCount = results.firstScoreACount
case .secondScore:
scoreCount = results.secondScoreACount
default:
scoreCount = results.scoreACount
}
case @"ScoreB":
switch individualScoreState {
case .firstScore:
scoreCount = results.firstScoreBCount
case .secondScore:
scoreCount = results.secondScoreBCount
default:
scoreCount = results.scoreBCount
}
default:
switch individualScoreState {
case .firstScore:
scoreCount = results.firstScoreACount + results.firstScoreBCount
case .secondScore:
scoreCount = results.secondScoreACount + results.secondScoreBCount
default:
scoreCount = results.scoreACount + results.scoreBCount
}
}
return count / scoreCount
}
// Структура результатов
struct Results {
var scoreACount = 0
var scoreBCount = 0
var firstScoreACount = 0
var firstScoreBCount = 0
var secondScoreACount = 0
var secondScoreBCount = 0
}
Возможно, есть более понятный способ справиться с этим.Возможно, способ объединить два случая переключения?
Редактировать: Забыл упомянуть, что results
является экземпляром структуры.