相关疑难解决方法(0)

这是Perl 6 Hash还是Block?

这有点意外的行为,可能会咬人初学者.首先,这是打算吗?其次,Perl 6使用什么来猜测要创建哪个对象?它是否开始认为它是Block或Hash并稍后更改,还是最终决定?

你可以用大括号和胖箭头构造一个哈希:

my $color-name-to-rgb = {
    'red' => 'FF0000',
    };

put $color-name-to-rgb.^name;  # Hash
Run Code Online (Sandbox Code Playgroud)

使用另一个Pair符号也会创建哈希.

my $color-name-to-rgb = {
    :red('FF0000'),
    };
Run Code Online (Sandbox Code Playgroud)

但是,如果没有胖箭,我会得到一个Block:

my $color-name-to-rgb = {
    'red', 'FF0000',
    };

put $color-name-to-rgb.^name;  # Block
Run Code Online (Sandbox Code Playgroud)

哈希文档仅提到使用$_大括号内创建一个.

还有其他方法来定义哈希,但我问的是这个特定的语法,而不是寻找我已经知道的解决方法.

$ perl6 -v
This is Rakudo version 2017.04.3 built on MoarVM version 2017.04-53-g66c6dda
implementing Perl 6.c.
Run Code Online (Sandbox Code Playgroud)

hash block perl6 raku

12
推荐指数
2
解决办法
533
查看次数

Raku rebless 不再适用于继承类

此线程中给出的代码不再起作用:如何在 Perl 6 中重新启用对象?

我去年写了这段代码,然后它就起作用了。现在它没有:

class Person { ; }
class Woman is Person { ; }
my $tom = Person.new;
my $lisa = Woman.new;

say $tom.^name;  # -> Person
say $lisa.^name; # -> Woman

Metamodel::Primitives.rebless($tom, Woman);
# -> New type Woman for Person is not a mixin type
Run Code Online (Sandbox Code Playgroud)

错误消息没有意义,因为它应该与继承的类一起使用。至少是这样。

该文档没有帮助;https://docs.raku.org/routine/rebless

raku

9
推荐指数
2
解决办法
281
查看次数

标签 统计

raku ×2

block ×1

hash ×1

perl6 ×1