老实说,移植到swift3(来自obj-c)很难。最简单但最迅速的问题。
public func readByte() -> UInt8
{
// ...
}
public func readShortInteger() -> Int16
{
return (self.readByte() << 8) + self.readByte();
}
从编译器获取错误消息:“二进制运算符+不能应用于两个UInt8操作数。”
有什么问题?
PS。太可惜了;)
答案 0 :(得分:4)
a
返回readByte
所以:
UInt8
左移8位,你将失去所有的位。UInt8
,无法满足计算的UInt8
值。Int16
,它不是带注释的返回类型UInt8
。 d
Int16
虽然Swift对操作数有一个严格的左右评估顺序,但我重构了代码,使其显式首先读取哪个字节,然后读取哪个字节。
OR运算符也更具自我文档和语义。
答案 1 :(得分:0)