0

我有以下声明:

colset AUTHENTICATION = product INT * STRING;
colset REQUEST_PUB = product AUTHENTICATION * STRING * REAL;
colset REQUEST_SUB = product AUTHENTICATION * STRING * INT;
colset REQUEST_PUBSUB = union pub_req:REQUEST_PUB + sub_req:REQUEST_SUB;

var pubsub_req : REQUEST_PUBSUB

我有一个类型的地方REQUEST_PUBSUB,可以接收REQUEST_PUBREQUEST_SUB类型的令牌。这个地方将变量发送pubsub_req到转换。我想使用这些pubsub_req值进行操作。例如,测试请求的字符串参数是否为某个值。我正在尝试这样做#3 pubsub_req = "some value",但出现以下错误:

错误:运算符和操作数不一致 [类型不匹配]
运算符域:{3:'Y;'Z}
操作数:表达式中的 REQUEST_PUBSUB
:(fn {3=3,...} => 3) pubsub_req
详细失败

如何对 UNION 类型的元素进行操作?

4

1 回答 1

0

我没有像我尝试的那样做,而是将REQUEST_PUB类型更改为:

colset REQUEST_PUB = product AUTHENTICATION * STRING * INT;

然后,我传递了一个列表,例如((int_var, string_var), string_var, int_var), 而不是REQUEST_PUBSUB变量。这样我就可以在一些列表变量中执行操作。

于 2019-09-24T19:18:11.560 回答