在Perl 6中声明“native”类型

7

你有检查过 lib/experimental.pm6 吗? - Elizabeth Mattijsen
1
@ElizabethMattijsen 我确实这样做了,那里有很多其他使用它的定义。但正如上面所说,我所能做的就是从观察中推断出行为... - jjmerelo
1个回答

11
native包声明符是Rakudo Perl 6编译器实现的一个细节,而不是Perl 6语言的一部分。需要某种机制来表达语言运行时和在Perl 6标准库中声明的int32num64等类型之间的关系。原生对象需要不同类型的元对象,由于包声明符(如classrole)的工作方式是通过映射到特定类型的元对象,因此引入native包声明符是引导Perl 6类型系统的一种巧妙方式。

从未打算在标准库之外使用native(我可以自信地说,因为我发明了这种机制)。鉴于本机类型的性能敏感性,Perl 6编译器开发人员应该被赋予最大的自由度来选择如何定义它们,并随着时间的推移进行改进。不能确定native声明符在Rakudo中将永远存在,也不能确定任何未来的Perl 6编译器开发人员会选择以相同的方式做事情。

如果想要一个对本机类型名称的别名,只需使用constant

constant smallish = int;

由于constant在编译时计算,因此可以像任何其他类型一样使用此符号。通过Perl 6中可用的类型或NativeCall库已经公开了与否则在native上可用的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接