我希望能够从名为group
的集合中声明一个或两个相同类型的变量。我知道one
和lone
可以分别用于声明一个或零个/一个变量。到目前为止我的尝试是:
one x : group, lone y : from | {...}
然而,这似乎不起作用。我的目标是有一个或两个变量,然后我可以在下面的表达式中使用。
答案 0 :(得分:2)
这里可能会有混淆。
如果你写one x:group| expr
这意味着组中应该只有一个x,以便表达式expr
成立。
知道这一点,如果你想表达那种约束,你可以写下这样的东西:
e.g。假设有一个名为size
的字段描述了从group
到Int
的关系,
表示至少一个,最多两个组的大小为5,可按如下方式进行
one x,y : group | (x + y).size=5
在此示例中,x+y
将产生一个或两个组元素,具体取决于x=y
是否。{/ p>