为什么perl6 repl无法区分两个不同的类?

时间:2018-12-23 14:51:25

标签: perl6

我正在尝试在repl中创建一些类,当我创建第二个具有与第一类相同的属性的类时,会被告知已经定义。

这仅仅是repl无法正确处理名称空间的问题吗?它可以在文件中按预期方式工作。

Perl6版本:这是基于MoarVM版本2018.10构建的Rakudo版本2018.10。 实施Perl 6.c。

> class Thing {
*   has $.stuff;
* }      
(Thing)
> class OtherThing {
*   has $.stuff;
* }
Package 'OtherThing' already has an attribute named '$!stuff'
  in any scope_declarator at /home/path/.rakudobrew/moar-2018.10    /install/share/nqp/lib/Perl6/Grammar.moarvm line 1
  in any term:sym<scope_declarator> at /home/path/.rakudobrew/moar-2018.10/install/share/nqp/lib/Perl6/Grammar.moarvm line 1
  in any term at /home/path/.rakudobrew/moar-2018.10/install/share/nqp/lib/Perl6/Grammar.moarvm line 1

1 个答案:

答案 0 :(得分:8)

我只是尝试在REPL上略有不同地复制了此内容,所以没有错误...

> class Thing { has $.stuff }
(Thing)
> class OtherThing { has $.stuff }
(OtherThing)
>

PS。将块分布在多行上时,确实会收到与您相同的错误。

这是基于实现Perl 6.c的MoarVM版本2018.10构建的Rakudo Star版本2018.10。

看起来您的错误是由REPL中的*多行块逻辑引起的-我认为这是一个错误。请报告吗?