【发布时间】:2016-06-15 22:35:41
【问题描述】:
我想转换以下句子:
infix operator <*> {}
public func <*> (left: Int64, right: Int16) -> UInt8 {
return UInt8( (left & Int64((1 << right))) >> Int64(right) )
}
public func <*> (left: Int32, right: Int16) -> UInt8 {
return UInt8( (left & Int32((1 << right))) >> Int32(right) )
}
只有一个类似于以下的通用函数:
public func <*> <T: IntegerType>(left: T, right: Int8) -> Bit {
return UInt8( (left & T((1 << right))) >> T(right) )
}
问题是我无法将1 << right 或right 构造或转换为T:
Overloads for 'T' exist with these partially matching parameter lists: (integerLiteral: Self.IntegerLiteralType), (_builtinIntegerLiteral: _MaxBuiltinIntegerType)
有什么方法可以用泛型来表达吗?
【问题讨论】: