所有
根据Swift编程书,p。 52,下面的代码不应该工作,因为x是Int64,y显然是Int16,但Swift操场批准了。
var x:Int = 32
var y:Int16 = 12
x + y
如果我使用 - ,*或/,编译器会对象,那么这是一个错误吗?如果没有,那么+?
的不同之处迈克尔
答案 0 :(得分:2)
+
运算符有两个通用声明,可以在一侧处理Strideable
值,在另一侧处理与第一个值Stride
别名匹配的值。它适用于这种情况,因为(a)Int16
通过Strideable
符合RandomAccessIndexType
,而Int
是Stride
的{{1}}别名其他整数类型。
换句话说,您正在调用这些函数中的第一个,而不是第二个函数:
Int16