如何在 Ada 中添加向量
How to add vectors in Ada
我有一个表示坐标的 (x,y,x) 形式的向量。我希望能够执行类似 (x,y,z) + (x2,y2,z2) 的操作来生成一组新坐标。 Ada 说它不能对复合类型使用“+”,但我肯定有办法做到这一点?
如果将向量定义为包含浮点类型的元素,则可以使用通用包 Ada.Numerics.Generic_Real_Arrays。这个包在 Ada 语言参考手册的 G.3.1 节中有描述。
如果您想将向量定义为包含复数类型的元素,那么您可以使用 G.3.2 节中描述的通用包 复杂向量和矩阵
如果您希望使用整数类型作为向量分量,您可以为整数向量类型编写“+”函数。
如果你有
type Vector is record
X : Float;
Y : Float;
Z : Float;
end record;
你可以定义+
为
function "+" (L, R : Vector) return Vector is
(L.X + R.X, L.Y + R.Y, L.Z + R.Z);
在定义 -
时要小心,就像在整个过程中使用 -
一样!该错误非常难以发现。
我有一个表示坐标的 (x,y,x) 形式的向量。我希望能够执行类似 (x,y,z) + (x2,y2,z2) 的操作来生成一组新坐标。 Ada 说它不能对复合类型使用“+”,但我肯定有办法做到这一点?
如果将向量定义为包含浮点类型的元素,则可以使用通用包 Ada.Numerics.Generic_Real_Arrays。这个包在 Ada 语言参考手册的 G.3.1 节中有描述。
如果您想将向量定义为包含复数类型的元素,那么您可以使用 G.3.2 节中描述的通用包 复杂向量和矩阵
如果您希望使用整数类型作为向量分量,您可以为整数向量类型编写“+”函数。
如果你有
type Vector is record
X : Float;
Y : Float;
Z : Float;
end record;
你可以定义+
为
function "+" (L, R : Vector) return Vector is
(L.X + R.X, L.Y + R.Y, L.Z + R.Z);
在定义 -
时要小心,就像在整个过程中使用 -
一样!该错误非常难以发现。