在阅读苹果公司的Swift编程语言书时,我偶然发现Pointwise、Pointwise小于和Pointwise大于运营商。参考资料:声明
.== Pointwise equal
.!= Pointwise not equal我找不到关于什么时候使用这些东西的解释和例子。这些操作符的功能是什么?
发布于 2019-04-04 09:04:21
运算符是protocol SIMD的一部分,这是“SIMD向量类型”遵守的协议。
它们是在Swift 5中与塞-0229一起引入的。从该提案中:
我们来讨论口罩吧。SIMD是等价的,所以它们有==和!=运算符,但是它们也提供了“点态比较”
.==和.!=运算符,它们比较两个向量的车道,并产生一个掩码,它是布尔值的向量。掩码的每个车道要么是true,要么是false,这取决于比较相应车道中的值的结果。举个例子: (swift)设x= SIMD4( 1,2,3,4) // x: SIMD4 = SIMD4(1,2,3,4) (迅速)让y= SIMD4(3,2,1,0) /y: SIMD4 = SIMD4(3,2,1,0) (SIMD4)x .== y/ r0 : SIMDMask> =SIMDMask(假,真,假,假) 在这里,第二个车道是true,因为2 == 2,而所有其他车道都是假的,因为这些车道中的x和y元素不相等。
一个固定数目的元素的SIMD向量。 静态函数.== (Self,Self) -> SIMDMask //返回一个向量掩码,其结果是点相等比较。静态函数.> (Self,Self) -> SIMDMask //返回一个向量掩码,其结果的点态大于比较。
另一个例子是:
import simd
let x = SIMD3<Float>(1.0, 2.0, 3.0)
let y = SIMD3<Float>(3.0, 2.0, 1.0)
print(x .== y) // SIMDMask<SIMD3<Int32>>(false, true, false)
print(x .!= y) // SIMDMask<SIMD3<Int32>>(true, false, true)
print(x .< y) // SIMDMask<SIMD3<Int32>>(true, false, false)https://stackoverflow.com/questions/55511757
复制相似问题