【问题标题】:Unknown parameter UInt8 in '_specialize attribute': Xcode 9“_specialize 属性”中的未知参数 UInt8:Xcode 9
【发布时间】: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


【解决方案1】:

你只需要像这样在specialize定义中包含一个where子句

@_specialize(where T == UInt8)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 2018-10-10
    • 2018-09-07
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    相关资源
    最近更新 更多