Я использовал этот метод расширения для генерации случайных чисел:Swift3 Random Extension
func Rand(_ range: Range<UInt32>) -> Int {
return Int(range.lowerBound + arc4random_uniform(range.upperBound - range.lowerBound + 1))
}
мне понравилось б/с, что не было никакой глупости, ты только что назвал это так:
let test = Rand(1...5) //generates a random number between 1 and 5
честно, я не знаю, почему вещи должны быть настолько сложными в Swift, но я отвлекся ..
так что я получаю ошибку сейчас в Swift3
No '...' candidates produce the expected contextual result type 'Range<UInt32>'
Может кто-нибудь знать, что это значит, или как я могу снова запустить свою замечательную функцию Rand? Я думаю, x ... y больше не создает диапазоны или x..y должно быть явно определено как UInt32? Любые советы для меня, чтобы сделать вещи немного легче?
Большое спасибо, оцените ваше время!
Есть ли способ ограничить функцию 'rand', чтобы принимать только коллекцию n 'Int'? – rmaddy
@rmaddy: 'func rand (_ coll: C) -> C.Iterator.Element где C.Iterator.Element == Int' для свободной функции или' extension RandomAccessCollection где Iterator.Element == Int' для метода расширения. –