2

我有一个表示坐标的 (x,y,x) 形式的向量。我希望能够执行 (x,y,z) + (x2,y2,z2) 之类的操作来生成一组新坐标。Ada 说它不能对复合类型使用“+”,但我肯定有办法做到这一点吗?

4

2 回答 2

6

如果你有

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);

-当你定义类似的使用时要小心-!这个错误很难发现。

于 2020-09-18T14:24:48.440 回答
3

如果您将向量定义为包含浮点类型的元素,则可以使用通用包 Ada.Numerics.Generic_Real_Arrays。该软件包在 Ada 语言参考手册 G.3.1 部分中进行了描述。

如果要定义向量以包含复数类型的元素,则可以使用 G.3.2复数向量和矩阵部分中描述的通用包

如果您希望使用整数类型作为向量组件,您可以为您的整数向量类型编写“+”函数。

于 2020-09-18T05:01:35.683 回答