web-dev-qa-db-fra.com

Quel est l'opérateur de module (%) dans Swift 3?

J'ai cette ligne:

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

Et Xcode 8 (Swift 3) me dit:

'%' is unavailable: Use truncatingRemainder instead

N'y a-t-il plus d'opérateur? Comment dois-je convertir mon code?

22
Kalzem

Vous pouvez simplement suivre le message de diagnostic:

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

Ou utiliser arc4random_uniform(_:) serait une meilleure alternative.

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

 enter image description here

Cela semble être disponible pour moi, actuellement sur Swift 3.1, donc possible, il a été ajouté à nouveau.

Je suppose que c'est quelque part dans Foundation et qu'il nécessite un import Foundation explicite

Mettre à jour

Ceci est pour les types Int uniquement. Il semble que pour les doubles, il est nécessaire de tronquer le reste.

28
Logan

Transformez votre variable en Int avant mod

exemple

let result = Int(value) % 3
1
benmore99

Utilisez https://developer.Apple.com/documentation/Swift/double/2884269-remainder

Si vous utilisez truncatingRemainder (comme mentionné dans les autres commentaires), la valeur sera d'abord affichée, ce qui signifie que 3.14 deviendra 3.

0
Andrew Hodel