相关疑难解决方法(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 中使用时如何关闭 Perl 5 模块 Data::Printer 的 `show_tied` 选项?

我在 Perl 中使用了 CPAN Perl 模块 Data::Printer (DP)。它工作得很好。

现在我想在 Raku 代码中使用它。

当我使用该:from<Perl5>功能导入它然后使用它运行代码时,注释(tied to Perl6::Hash)会附加到哈希的显示中。1

正如DP 的 CPAN 文档所示,此注释由选项控制show_tied。我想将其关闭(设置为0)而不是默认开启(设置为1)。这是我在 Perl 中的做法:

use Data::Printer show_tied => 0;
Run Code Online (Sandbox Code Playgroud)

但是当我在 Raku 中尝试这个时:

use Data::Printer:from<Perl5> show_tied => 0;
Run Code Online (Sandbox Code Playgroud)

我得到:

从“Data::Printer”导入时出错:没有这样的标签“show_tied”

show_tied在 Raku 中使用 DP 时如何关闭?

脚注

1也许这是因为Inline::Perl5(实现该:from<Perl5>功能)正在做一些事情来实现流畅的 Perl/Raku 互操作。

tags import perl module raku

8
推荐指数
1
解决办法
115
查看次数

终端ANSI颜色不适用于Inline :: Perl5(Data :: Printer)

以下Perl 5脚本:

use strict;
use warnings;

use Data::Printer;
my @a = (1,2,3,4);
p @a;
Run Code Online (Sandbox Code Playgroud)

给出输出:

在此输入图像描述

(注意蓝色),而这个Perl 6脚本:

use Data::Printer:from<Perl5>;
my @a = 1,2,3,4;
p @a;
Run Code Online (Sandbox Code Playgroud)

给出输出:

[
    [0] 1,
    [1] 2,
    [2] 3,
    [3] 4
]
Run Code Online (Sandbox Code Playgroud)

但数字没有着色(如上面的Perl 5案例).

系统信息:

$ perl --version
This is perl 5, version 29, subversion 3 (v5.29.3) built for x86_64-linux
$ perl6 -e '.say for $*DISTRO, $*VM, $*PERL.compiler.version'
ubuntu (18.10.Cosmic.Cuttlefish)
moar (2018.11)
v2018.11
Run Code Online (Sandbox Code Playgroud)

perl6 raku

5
推荐指数
1
解决办法
122
查看次数

标签 统计

raku ×3

perl6 ×2

block ×1

hash ×1

import ×1

module ×1

perl ×1

tags ×1