我想通过制作一个用于操作多项式的方法来测试编写Ada包的水域.可以为一大类代数结构定义多项式,因此为了反映这一点,我想使包通用,因此它可以与Floats,Integers或其他数字子类型一起使用.
我现在想说的是,我对Ada的类型系统如何工作或它的包系统如何工作知之甚少.网络上似乎缺乏良好的初学者Ada信息,因此我不得不从这篇不那么新手友好的Wikibooks文章中收集到我能够获得的智慧.
此页面包含有关类型层次结构的一些信息.基于此,似乎我的Polynomial包的合理类型将是Scalar类型,因为显然是定义算术运算的类型.所以这就是我所尝试的polynomials.ads:
generic
MAX_DEGREE : Positive;
type Element is new Scalar;
package Polynomial is
type Polynomial is Array (0 .. MAX_DEGREE) of Element;
end Polynomial;
Run Code Online (Sandbox Code Playgroud)
但是,这只是让我忘了"Scalar" is undefinedGNAT.
到目前为止,我真的只是半盲地感觉到了,我实际上并不知道这些东西是如何起作用的.如果我认为你认为需要澄清任何重大误解,请告诉我.可能最简单的方法是提供我可以学习的示例polynomial.ads和polynomial.adb代码 - 就像多项式类型的定义(使用泛型max-degree和element类型)和一个简单的示例函数(如添加两个多项式),所以我可以看到如何通用功能工作.
PS:排序相关,有没有办法为用户定义的类型定义属性?
ada ×1