typedef - 在 Rascal 中为复合类型命名(a la typedef)

标签 typedef rascal

在 Rascal 中,如何引入复合类型的名称(由内置基本类型和类型构造函数(如列表和映射)构造而成)? 例如。我想做类似的事情

typedef IntList = list[int];
typedef StrToIntList = map[str,IntList];
StrToIntList mymap = ();

最佳答案

您可以使用alias来代替typedef。例如:

rascal>alias IntList = list[int];
ok
rascal>alias StrToIntList = map[str,IntList];
ok
rascal>StrToIntList mymap = ();
StrToIntList: ()

您也可以使用alias为现有基本类型提供备用名称,因此您也可以执行以下操作:

alias ID = int;

并且,如果需要,您可以包含类型参数,因此任意类型的图形可以定义为:

alias Graph[&T] = rel[&T,&T];

请注意,别名引入了等效类型,而不仅仅是子类型。因此,对于任何接受别名作为参数类型的函数,您还可以提供它别名的类型或其任何子类型的值。

关于typedef - 在 Rascal 中为复合类型命名(a la typedef),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39615798/

相关文章:

rascal - 从函数返回值和语句

c++ - 克隆类型?

c - 带有 typedef 整数的 Printf,尤其是 64 位

objective-c - ObjC 中的 #typedef 和 KVC

rascal - 将逻辑位置转换为物理位置

rascal - 从字符串构造位置

rascal - Rascal 中的具体语法匹配

c - typedef 何时成为实际类型?

c++ - 结构和指针 C++

rascal - rascal 中的字符串大写