我需要知道验证环境中枚举类型中有多少个值。例如:
type my_type: [a, b, c, d];
我有一种方法可以即时检查my_type
中是否有4个不同的值?
谢谢您的帮助
答案 0 :(得分:4)
有一个all_values(...)
伪例程,它返回标量类型的所有可能值。您可以使用它来获取enum
文字的数量:
assert all_values(my_type).size() == 4;
答案 1 :(得分:1)
除了Tudor的建议之外,另一种方法是使用set_of_values()
伪例程,该伪例程返回所有值的set
(而不是列表):
set_of_values(my_type).uint_size()
在某种程度上,使用set_of_values()
会更好,因为all_values()
会创建一个新列表,该列表通常比集合消耗更多的内存。
uint_size()
返回集合的大小为uint
。也有size()
,但是它返回int(bits: *)
,因此在这种情况下使用uint_size()
就足够了,因为枚举类型中的项不能超过MAX_UINT
。
答案 2 :(得分:1)
还-set_of_values()返回'set',您可以查询该类型的最小/最大值及其范围。
例如:
var x := set_of_values(my_type).uint_max();
keep y == set_of_values(my_type).uint_max().as_a(my_type).as_a(my_type);
print set_of_values(my_type).uint_min().as_a(my_type);