当前位置: 首页 > 知识库问答 >
问题:

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

艾才良
2023-03-14

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

这仅仅是repl不能正确处理名称空间的问题吗?它在文件中按预期工作。

Perl6版本:这是Rakudo版本2018.10,构建于MoarVM版本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个答案

佟英武
2023-03-14

我只是尝试在我的REPL上复制这个稍微不同的结果,我没有得到任何错误。。。

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

附言:当我把方块分散到多条线上时,我确实会遇到和你一样的错误。

这是Rakudo Star 2018.10版,它是在MoarVM 2018.10版的基础上构建的,实现了Perl 6。c

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

 类似资料:
  • 问题内容: 考虑以下两种情况: (转到Playground链接) 第二个打印9.120000000000001,实际上很好 但是,为什么第一行打印9.12,但末尾没有…01?Go是否会将两个未类型化的常数相乘,并在编译时将它们简单地替换为9.12文字? 问题答案: 根据规格: 常量表达式总是精确地求值;中间值和常量本身可能需要比该语言中任何预声明类型支持的精度大得多的精度。 以来 是一个常数表达式

  • 我知道什么是mapPartition转换和map。一些帖子声称mapPartition比map快。在什么情况下,我们使用mapPartition而不是map?mapPartition比map快吗?

  • 我有一个类Human,它包含两个字段,age(int)和name(String)。在eclipse中,我用这两个字段重写hashCode()和equals()方法。我还根据年龄字段创建了一个比较器。 现在,我用年龄比较器创建了一个TreeSet对象,还创建了Human类的两个实例(具有不同的字段值)。然后我将这两个对象添加到集合中,然而,集合中总是只有一个对象。 为了理解问题,我打印了这两个对象的

  • 我创建了的两个实例,如下所示。一个是从创建的,另一个是相同的,但在开头加上了一些附加的数字。使用方法比较它们时,它返回: 我认为添加的数字被丢弃了,并且两者给出了相同的UUID字符串值。为什么会这样?

  • 我有两个接近1000大小的整数向量,我要做的是检查这两个向量的平方整数和是否相同。所以我编写以下代码: