【发布时间】:2018-12-26 08:13:33
【问题描述】:
我需要知道在我的验证环境中枚举类型中有多少个值。例如:
type my_type: [a, b, c, d];
我有办法即时检查my_type 中有 4 个不同的值吗?
感谢您的帮助
【问题讨论】:
我需要知道在我的验证环境中枚举类型中有多少个值。例如:
type my_type: [a, b, c, d];
我有办法即时检查my_type 中有 4 个不同的值吗?
感谢您的帮助
【问题讨论】:
有一个all_values(...) 伪例程,它返回标量类型的所有可能值。您可以使用它来获取 enum 文字的数量:
assert all_values(my_type).size() == 4;
【讨论】:
除了 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。
【讨论】:
还有——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);
【讨论】: