如何创建包含不同类型的集合

How to create a set containing different types

如何创建包含 loc、int 和字符串的集合? 在下面的示例中,我的地图似乎已转换为容器类型“value”。我想用一套的特点; 集合中只应包含一个元素,顺序无关紧要。 在下面的示例中,相同的元素包含在我希望成为集合的内容中。

rascal>mySet = ();
map[void, void]: ()
rascal>mySet += {<|project://Test/|, 1, "test"> };
value: {
  (),
  <|project://Test|,1,"test">
}
rascal>mySet += {<|project://Test/|, 1, "test"> };
value: {
  <|project://Test|,1,"test">,
  {
    (),
    <|project://Test|,1,"test">
  }
}

再次感谢您的建议:-)

发生了一些奇怪的事情。首先 mySet 是一个地图,然后向其添加一个集合,变量 mySet 突然变成一个包含先前地图和您添加的新元素的集合。在我看来 += 有一个错误。

如果您想向集合中添加多个元素,您应该从一个集合开始,然后像这样向其中添加元素:

rascal>mySet = { |project://Test| ,1, "test" }; // simply create the set with 3 different elements in it
set[value]: { |project://Test| ,1, "test" }

或者您可以从一个空集开始并添加元素:

rascal>mySet = {};
set[void]: {}
rascal>mySet += 1;
set[int]: {1}
rascal>mySet += |project://Test|;
set[value]: {1, |project://Test|}
rascal>mySet += "test";
set[value]: {1, |project://Test|, "test"}