web-dev-qa-db-ja.com

Swift 3のモジュラス演算子(%)とは何ですか?

私はこの行を持っています:

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

そして、Xcode 8(Swift 3)は私に言っています:

'%' is unavailable: Use truncatingRemainder instead

もう演算子はありませんか?コードを変換するにはどうすればよいですか?

23
Kalzem

診断メッセージに従うだけです:

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

または、arc4random_uniform(_:)を使用することをお勧めします。

_let randomIndex = Int(arc4random_uniform(UInt32(alphabetColors.count)))
_
29
OOPer

enter image description here

これは現在利用できるようです。現在Swift 3.1です。

私の推測では、Foundationのどこかにあり、明示的なimport Foundation

更新

これは、Int型専用です。ダブルスの場合、残りを切り捨てる必要があるようです。

30
Logan

Modの前に変数をIntにキャストします

let result = Int(value) % 3
3
benmore99

https://developer.Apple.com/documentation/Swift/double/2884269-remainder を使用します

(他のコメントで述べたように)truncatingRemainderを使用すると、最初に値がフロアリングされます。つまり、3.14は3になります。

0
Andrew Hodel