我正在尝试将一些代码从Objective-C转换为Swift并遇到这种情况:
import simd
let a = int2(1, 0)
let b = int2(0, 1)
print(a + b) // COMPILER FAILS
print(a &+ b) // SUCCESS
为什么将完全可理解的语法改为这种神秘的符号?
答案 0 :(得分:7)
关于Swift 2的Xcode 7发行说明:
SIMD改进:现在仅在simd模块中使用整数向量类型 使用& +,& - 支持使用环绕语义的未经检查的算术, 和& *运算符,以便更好地支持机器模型 向量。 +, - 和*运算符在整数向量上不可用, 和Xcode自动建议用包装替换它们 运算符。
这种不寻常的语法特别明确表示添加是使用未经检查的算法完成的。
答案 1 :(得分:1)
取出你的Swift书,找出a + b和a& + b之间的区别为普通整数。
现在你正在使用矢量。没有SIMD操作具有与+相同的语义。它可以构建,但是你会抱怨它有多慢。然而,SIMD操作具有与& +相同的语义。