Rascal 中的数据结构

Data structures in Rascal

我正在寻找可以模仿对象或结构的数据结构。真的,只是一些传递不同类型变量的紧凑方式。目前我正在使用元组,但引用元组的各个部分并不如我所愿。目前我刚刚创建了代表元组中各个位置的别名:

alias AuxClass = tuple[str,str,list[int],list[int],Dec];
int ACLS = 0;

但是我不得不重组这个元组,因此不得不更改索引。有什么我可以在这里使用但我错过了的东西或者将来可能会出现的功能吗?

谢谢!

请查看代数数据类型功能:

http://tutor.rascal-mpl.org/Rascal/Rascal.html#/Rascal/Declarations/AlgebraicDataType/AlgebraicDataType.html

您可以创建一个构造函数来表示您在上面尝试定义的数据类型,类似于您对结构所做的操作,并为构造函数中的每个元素指定一个字段名称:

data AuxClass = auxClass(str f1, str f2, list[int] f3, list[int] f4, Dec f5)

然后您可以使用构造函数名称并提供数据来创建它的新实例:

a = auxClass("Hello", "World", [1,2,3], [4,5,6], D1)(其中 D1Dec)。

拥有实例后,您可以使用字段名称访问信息:

a.f1 // which equals "Hello"

a.f3 // which equals [1,2,3]

size(a.f3) // 当前等于 3

并且您可以使用字段名称更新信息:

a.f2 = "Rascal"

a.f4 = a.f4 + 7 // f4 is now [4,5,6,7]

代数数据类型实际上非常灵活,除此之外您还可以使用它们做很多事情。请随意浏览文档并在此处提问。