swift 3中的模数运算符(%)是多少?

Kal*_*zem 23 modulus swift3

我有这条线:

randomIndex = Int(drand48() % Double(alphabetColors.count))
Run Code Online (Sandbox Code Playgroud)

而Xcode 8(Swift 3)告诉我:

'%' is unavailable: Use truncatingRemainder instead
Run Code Online (Sandbox Code Playgroud)

还没有操作员吗?我该如何转换代码?

Log*_*gan 30

在此输入图像描述

这似乎可用于我,目前在Swift 3.1上,所以有可能它被添加回来.

我的猜测是它在基金会的某个地方需要一个明确的 import Foundation

更新

这仅适用于Int类型.似乎对于双打,需要截断余数.

  • 哦,你是对的,我在官方文档https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html上找到了一个关于它的段落.他们称之为**余**运算符 (2认同)

OOP*_*Per 29

您只需按照诊断消息:

let randomIndex = Int(drand48().truncatingRemainder(dividingBy: Double(alphabetColors.count)))
Run Code Online (Sandbox Code Playgroud)

或使用arc4random_uniform(_:)将是一个更好的选择.

let randomIndex = Int(arc4random_uniform(UInt32(alphabetColors.count)))
Run Code Online (Sandbox Code Playgroud)


小智 8

将您的变量投射到Intmod 之前

例子

let result = Int(value) % 3
Run Code Online (Sandbox Code Playgroud)


kis*_*eji 5

根据新的 Swift 5 指南,它发生了变化

value.truncatingRemainder(dividingBy: 2)
Run Code Online (Sandbox Code Playgroud)