似乎按位运算符不能在Swift中使用UInt64变量。
class Polyomino {
var squares : UInt64 = 0
var xLength : UInt8 = 0
var yLength : UInt8 = 0
func addSquareAt(x : UInt8, y : UInt8) {
squares |= (UInt64(1) << (x + y * 8))
}
}
带有按位运算符的行给出了错误&#34;&#34; \ =&#34;使用提供的参数&#34;。以下陈述也是如此:
squares = squares | (UInt64(1) << (x + y * 8))
我认为这是苹果公司的一个错误(可能是错误的)但有没有办法暂时解决这个问题,还是我应该等待Apple修复?或者我可能做错了什么?
答案 0 :(得分:3)
Swift中的类型安全意味着您无法在不同的数字类型之间执行操作。您正试图将UInt8
转换为UInt64
,而UInt64
不受支持。请尝试将结果转换为func addSquareAt(x : UInt8, y : UInt8) {
squares |= 1 << UInt64(x + y * 8)
}
:
{{1}}