Как получить элементы типа UNION?

У меня есть следующие декларации:

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_PUB а также REQUEST_SUB типы. Это место отправляет переменную pubsub_req к переходу. Я хочу работать с pubsub_req ценности. Например, проверка, является ли строковый параметр запроса некоторым значением. Я пытаюсь сделать #3 pubsub_req = "some value", но я получаю следующую ошибку:

Ошибка: оператор и операнд не согласны [несоответствие типов]
домен оператора: {3:'Y;'Z}
операнд: REQUEST_PUBSUB
в выражении: (fn {3=3,...} => 3) pubsub_req
Разработанный провал

Как работать с элементами типа UNION?

0 ответов

Вместо того, чтобы делать то, что я пытался, я изменил REQUEST_PUB введите в:

colset REQUEST_PUB = product AUTHENTICATION * STRING * INT;

Затем я передал список, например ((int_var, string_var), string_var, int_var), вместо REQUEST_PUBSUBпеременная. Таким образом я мог выполнять операции с некоторыми переменными списка.

Другие вопросы по тегам