Что такое оператор модуля (%) в быстрых 3?

У меня есть эта строка:

randomIndex = Int(drand48() % Double(alphabetColors.count))

И Xcode 8 (Swift 3) говорит мне:

'%' is unavailable: Use truncatingRemainder instead

Нет ли оператора больше? Как мне преобразовать код?

Ответы

Ответ 1

Вы можете просто следовать диагностическому сообщению:

let randomIndex = Int(drand48().truncatingRemainder(dividingBy: Double(alphabetColors.count)))

Или использование arc4random_uniform(_:) будет лучшей альтернативой.

let randomIndex = Int(arc4random_uniform(UInt32(alphabetColors.count)))

Ответ 2

введите описание изображения здесь

Кажется, это доступно для меня, в настоящее время на Swift 3.1, поэтому возможно, что он был добавлен обратно.

Я предполагаю, что он где-то в Foundation и нуждается в явном import Foundation

Обновление

Это только для типов Int. Кажется, что для удвоений требуется усекающийся остаток.