我有两个代码片段试图将浮点列表转换为 Vector3 或 Vector2 列表。这个想法是一次从列表中取出 2/3 个元素并将它们组合为一个向量。最终结果是一系列向量。
let rec vec3Seq floatList =
seq {
match floatList with
| x::y::z::tail -> yield Vector3(x,y,z)
yield! vec3Seq tail
| [] -> ()
| _ -> failwith "float array not multiple of 3?"
}
let rec vec2Seq floatList =
seq {
match floatList with
| x::y::tail -> yield Vector2(x,y)
yield! vec2Seq tail
| [] -> ()
| _ -> failwith "float array not multiple of 2?"
}
代码看起来非常相似,但似乎没有办法提取公共部分。有任何想法吗?