问题描述
我有一个表示坐标的(x,y,x)形式的向量。我希望能够做类似(x,y,z)+(x2,y2,z2)的事情来产生一组新的坐标。 Ada说它不能对复合类型使用'+',但是肯定有一种方法可以做到这一点?
解决方法
如果有
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);
在定义-
时要特别小心,以至于始终使用-
!该错误很难被发现。
如果将向量定义为包含浮点类型的元素,则可以使用通用包Ada.Numerics.Generic_Real_Arrays。此软件包在Ada语言参考手册的G.3.1部分中进行了描述。
如果要定义向量以包含复数类型的元素,则可以使用G.3.2 复杂向量和矩阵
中描述的通用包。如果希望使用整数类型作为矢量分量,则可以为整数矢量类型编写“ +”函数。