Я пытаюсь вызвать определенную структуру, чтобы можно было изменить ее значение при нажатии кнопки. У меня проблемы с вызовом SIMD3 внутри структуры. В настоящее время у меня есть
struct CaptureData {
var vertices: [SIMD3<Float>]
var mode: Mode = .one
mutating func nextCase() {
mode = mode.next()
}
var verticesFormatted : String {
let v = "<" + vertices.map{ "\($0.x):\($0.y):\($0.z)" }.joined(separator: "~") + "method: \(mode.next().rawValue)"
return "\(v)"
}
}
И расширение, которое мне помогло ранее от @Joshua
enum Mode: String, CaseIterable {
case one, two, three
}
extension CaseIterable where Self: Equatable {
var allCases: AllCases { Self.allCases }
var nextCase: Self {
let index = allCases.index(after: allCases.firstIndex(of: self)!)
guard index != allCases.endIndex else { return allCases.first! }
return allCases[index]
}
@discardableResult
func next() -> Self {
return self.nextCase
}
}
Я пытаюсь инициализировать var instance = CaptureData(vertices: [SIMD3<Float>])
, но появляется ошибка: Cannot convert value of type '[SIMD3<Float>].Type' to expected argument type '[SIMD3<Float>]'
@ Jousha также предложил мне использовать следующее:
typealias XYZVar = (x: Float, y: Float, z: Float)
struct CaptureData {
var vertices:[XYZVar]
.... other variables
}
Однако я также пробовал это с var instance = CaptureData(vertices: [XYZVar])
, и он тоже не работал: Cannot convert value of type '[XYZVar].Type' (aka 'Array<(x: Float, y: Float, z: Float)>.Type') to expected argument type '[XYZVar]' (aka 'Array<(x: Float, y: Float, z: Float)>')
У меня вопрос, как правильно позвонить на SIMD3 и исправить указанную выше ошибку из var instance = CaptureData(vertices: [SIMD3<Float>])
?
Заранее большое спасибо.