Swift 5 - 如何将 struct/type 定义为数组?

Swift 5 - how to define struct/type as array?

假设我定义了这样的 Position 结构:

struct Movement : Codable {
    var x: Int
    var y: Int
    var delay: Int
}

现在我想传递 [0,0,0] 而不是 {"x":0,"y":0,"delay":123}。如何将 Movement 定义为恰好具有 3 个 int 值的数组?

我在Swift中有一个API,它接收到一个JSON对象,需要移动鼠标。目前 JSON 类似于 [{"x":1,"y":2,"delay":123},....],我想为此发送 [[1,2,123],...] 我想用其他东西替换 Movement 类型。

您可以使用 ExpressibleByArrayLiteral, but don't. Your type is already available as SIMD2.

([0, 0] as SIMD2).scalarCount // 2

你可以直接解码成你想要的格式

let data = #"[{"x":1,"y":2,"delay":123},{"x":2,"y":2,"delay":25}]"#.data(using: .utf8)!

let array = try! JSONDecoder().decode([[String: Int]].self, from: data)
    .map { [[=10=]["x"]!, [=10=]["y"]!, [=10=]["delay"]!]}

这假设键“x”、“y”和“delay”始终存在