【发布时间】:2016-01-15 10:11:27
【问题描述】:
所以不久前,我正在编写一些 Swift 代码,这将使我能够对二进制整数进行一些有用的额外操作,包括获取实际设置的最高位和最低位。
例如,这是我添加的一个基本属性,现在已损坏:
extension IntegerType {
var hiBit:Self { return ~self.allZeroes << ((sizeof(Self) * 8) - 1) }
}
现在无法编译,因为 IntegerType 不再符合 BitwiseOperationsType 所以波浪号运算符和 allZeroes 属性不再可用。同样,实现IntegerType 或BitwiseOperationsType 的结构似乎不再需要具有移位运算符,它们现在似乎只是按惯例定义的,除非我错过了一些东西。这意味着我也不能将我的代码移植到 BitwiseOperationsType,即使它看起来更合乎逻辑。
所以我的问题是;我在哪里实现最高级别的代码?我不想为每个特定的整数类型复制它,这就是我扩展IntegerType 开始的原因。
顺便说一句,我最初将hiBit 实现为static 属性,但这些似乎不再受支持,这显然很奇怪,并且错误消息暗示它们将在未来出现,暗示它们已从规范中删除;但我没有运行 Xcode 测试版。
【问题讨论】:
标签: swift polymorphism bitwise-operators bit-shift