我试图有一个程序从用户那里获取一个数字(从 1 - 12),它会返回那个月的简短形式,例如:如果你写1
它会返回JAN
等等。
我有以下几点:
type Month_Type is (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC);
但我如何将其链接到userMonth : Integer;
. 我想过类似 Month_Type(userMonth) 的东西,但这不起作用并给了我错误。我能想到的唯一另一件事是为每个 Month_Type 设置一个循环,并在其中设置一个计数器以使其匹配。但这看起来很乱而且效率不高,一定有更好的方法。
在离散类型的操作中,属性'Val
表示一个函数,该函数返回Month_Type
位置编号等于传递给它的参数值的类型的值。例如,该表达式的Month_Type'Val(0)
计算结果为JAN
。
请注意,属性使用的内部代码不受Enumeration Representation Clause 的影响。给定诸如 之类的声明userMonth : constant := 1
,请使用表达式Month_Type'Val(userMonth - 1)
。
当使用带有GNAT的表示子句时,实现定义的属性'Enum_Val
表示一个函数,该函数“返回其表示与参数匹配的枚举值”。使用此处建议的表示子句,表达式的Month_Type'Enum_Val(userMonth)
计算结果为JAN
无需调整。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句