【发布时间】:2017-06-14 07:07:42
【问题描述】:
用于从位数组构建位模式的代码在 Xcode 9 中出现错误(适用于 8.3.3)
@_specialize(UInt8)
func integerFrom<T: UnsignedInteger>(_ bits: Array<Bit>) -> T {
var bitPattern: T = 0
for idx in bits.indices {
if bits[idx] == Bit.one {
let bit = T(UIntMax(1) << UIntMax(idx))
bitPattern = bitPattern | bit
}
}
return bitPattern
}
错误
'_specialize 属性'中的未知参数 UInt8
对此有何线索/建议?
【问题讨论】:
-
@GoJava 函数的预期行为已经在函数上方的注释中给出(“从位数组构建位模式”)。不过谢谢你的提示,我会更明确的。
-
对不起,我没有看到(评论已删除)。感谢您的编辑:)
-
代码中@_specialize 属性的原因是什么? @_specialize 当前充当优化器的提示......你真的需要这个吗?如果您确定需要它,请使用 @_specialize(where T == UInt8) 用于 swift 3.2
-
我认识这个代码。您可以使用
@_specialize(where T == UInt8)删除私有专业化属性或更新到 Swift 4 语法
标签: xcode9-beta swift3.2