gpt4 book ai didi

swift - 具有基数类型安全性的通用向量

转载 作者:搜寻专家 更新时间:2023-11-01 07:28:26 25 4
gpt4 key购买 nike

我是第一次接触 Swift,尤其是它的泛型。作为个人练习,我正在实现一个结构来为任何 n 的 n 维向量建模。

许多向量运算仅对某些基数有效。例如,将 2D 矢量添加到 3D 矢量没有多大意义。只能在一对 3 维或 7 维向量上计算叉积。

我正在尝试找到一种类型安全的方法来执行此操作,类似于 C++'s templates, which let you specify any arbitrary variable as a type .

这就是我正在寻找的语法:

var vector2D = Vector<2>(1,2)
var vector3D = Vector<3>(3,4,5)
var fail = vector2D + vector3D //disallowed because of mismatched cardinality.

目前,基数是一个结构成员,其值是从 init() 的数字参数中推断出来的。这允许我执行基数的运行时检查,但不能在编译时检查。

有没有办法实现这种编译时类型检查?

最佳答案

Swift 目前没有原生的依赖类型数组。但是你可以自己创建一个,看看this great blogpost通过 @oisdk深入研究了这个主题。使用上述代码,您可以得到如下内容:

let twoLong = emptyArray() +| 1 +| 2
let twoChar = emptyArray() +| "a" +| "b"

onlySameLength(twoLong, rhs: twoChar)

let threeInts = emptyArray() +| 1 +| 2 +| 3

onlySameLength(twoLong, rhs: threeInts) // error

您可以在 Playground 获取代码和帖子 here .

关于swift - 具有基数类型安全性的通用向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com