【发布时间】:2014-06-06 04:18:50
【问题描述】:
在 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))
}
}
按位运算符的行给出错误“使用提供的参数无法为“\=”找到重载”。以下语句也是如此:
squares = squares | (UInt64(1) << (x + y * 8))
我假设这是 Apple 的错误(可能是错误的),但有什么方法可以暂时解决这个问题,还是我应该等待 Apple 修复?还是我做错了什么?
【问题讨论】:
-
尝试将所有内容投射到
UInt64 -
哇类型的安全性在swift中确实得到了更多的强制执行,呵呵。我需要将位移中的第二部分类型转换为 UInt64。
-
希望您不介意我编辑您的问题的标题以使其更笼统。 (在我的情况下,我正在使用 UInt32,也许正因为如此,我的搜索没有找到这个问题和答案。所以我正在发布我自己的问题,幸运的是,这个问题显示为“类似问题”。)
标签: swift