У меня есть класс Player
, в котором хранится свойство rating
типа Int
:
class Player {
typealias Rating: Int
var rating: Rating = 0
}
. У меня есть различные экземпляры Range
, которые указывают level
для данного player
находится по адресу:
private let level1Range = 0 ..< 100
private let level2Range = 100 ..< 500
Затем я могу switch
на свойстве player
rating
получить уровень, на котором находится player
:
switch rating {
case level1Range:
print("On Level 1")
case level2Range:
print("On Level 2")
default:
break
}
Я хочу быть в состоянии сказать, что такое следующий уровень и как далеко player
от этого следующего уровня.
Я не уверен, что лучший способ выйтиЭта проблема.Я начал с создания массива:
private var ratingRanges: [Range] {
return [level1Range, level2Range]
}
Но я получаю ошибку:
Ссылка на универсальный тип 'Range' требует аргументов в <...> Вставить '<<#Bound: Comparable # >> '
Если бы это сработало, то, я думаю, я мог бы найти первое ненулевое значение:
ratingRanges.first(where: { $0.min() - self.rating > 0 })
, чтобы найти следующий диапазон.
Или есть более эффективный способ для этого?
Спасибо за любую помощь