Hun*_*ter 7 floating-point xcode swift
我试图让我的代码没有警告。因为我刚刚更新了 Xcode,并且知道收到警告信号。我也尝试在下面解决这个问题。
这是给我警告的代码:
代码:
extension float4x4 {
var translation: float3 {
return float3(columns.3.x, columns.3.y, columns.3.z)
}
init(translation vector: float3) {
self.init(float4(1, 0, 0, 0),
float4(0, 1, 0, 0),
float4(0, 0, 1, 0),
float4(vector.x, vector.y, vector.z, 1))
}
}
extension float4 {
var xyz: float3 {
return float3(x, y, z)
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试翻译的内容如下:
代码:
extension SIMD4 {
var translation: SIMD3<Float> {
return SIMD3(columns.3.x, columns.3.y, columns.3.z)
}
init(translation vector: SIMD3<Float>) {
self.init(SIMD4<Float>(1, 0, 0, 0),
SIMD4<Float>(0, 1, 0, 0),
SIMD4<Float>(0, 0, 1, 0),
SIMD4(vector.x, vector.y, vector.z))
}
}
extension SIMD4 {
var xyz: SIMD3<Float> {
return SIMD3<Float>(x, y, z) as! SIMD3<Float>
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
基本上,我尝试过替换:
float3
Run Code Online (Sandbox Code Playgroud)
和:
SIMD3<Float>
Run Code Online (Sandbox Code Playgroud)
并且警告已经消失。
看起来您SIMD4在真正打算扩展时意外地进行了扩展float4x4(与float3和不同float4,它并未被弃用)。
另外,在您的其他扩展中,它可能应该是SIMD3<Scalar>,而不是SIMD3<Float>,这样xyz将返回与调用的任何类型SIMD3具有相同类型的 a :ScalarSIMD4
extension float4x4 {
var translation: SIMD3<Float> {
SIMD3(columns.3.x, columns.3.y, columns.3.z)
}
init(translation vector: SIMD3<Float>) {
self.init(.init(1, 0, 0, 0),
.init(0, 1, 0, 0),
.init(0, 0, 1, 0),
.init(vector.x, vector.y, vector.z, 1))
}
}
extension SIMD4 {
var xyz: SIMD3<Scalar> {
SIMD3(x, y, z)
}
}
Run Code Online (Sandbox Code Playgroud)