小编Pat*_*Pat的帖子

如何使用perl 6创建独立的可执行文件?

OLD Perl 6 faq说:"基于Parrot的Perl 6编译器Rakudo允许编译为字节码,并且存在一个小的包装器,它可以将字节码文件和parrot打包成一个可执行文件."

因此,有可能创建一个独立的可执行文件,但我找不到任何文档解释如何解决这个问题,或者它是否仍然可行.所以,我转向你.将Perl 6代码转换为可在未安装Perl 6的系统上运行的独立可执行文件所需的适当咒语集是什么?

rakudo perl6 raku

10
推荐指数
1
解决办法
729
查看次数

如何检查Perl 6模块?

在另一个问题中(我如何在与程序相同的文件中声明和使用Perl 6模块?),我有这样的代码:

module Foo {
    sub foo ( Int:D $number ) is export {
        say "In Foo";
        }
    }

foo( 137 );
Run Code Online (Sandbox Code Playgroud)

我想检查Foo模块以查看它是否已定义以及可能在其中进行一些调试的内容.既然Foo是一个模块而不是一个类,那么元方法是否有意义?

此外,我认为曾经有一种方法来获取类中的方法列表.我想获得一个模块中的子程序列表.这将是测试我定义正确的东西和Perl 6了解它们的一种方法.在我的Perl 5中,我经常测试我已经定义了一个子程序,因为我有一段时间,我会在模块中选择一个名称,并在测试中略有不同的名称(比如昨晚,我猜,有valid_valueis_value_value) .如果我可以测试foo已定义,我可以在这里进行一些调试.

module perl6 raku

10
推荐指数
1
解决办法
103
查看次数

perl6祝福和新的区别

class Singleton {
    # We create a lexical variable in the class block that holds our single instance.
    my Singleton $instance = Singleton.bless; # You can add initialization arguments here.
    method new {!!!} # Singleton.new dies.
    method instance { $instance; }
}
Run Code Online (Sandbox Code Playgroud)

我发现上面的代码实现了Singlelton,我想知道Perl6中的bless和new有什么区别?

my Singleton $instance = Singleton.bless; 


my Singleton $instance = Singleton.new; 
Run Code Online (Sandbox Code Playgroud)

oop perl6 raku

10
推荐指数
2
解决办法
278
查看次数

为什么Perl 6的字符串连接不像.WHAT?

我对这段代码感到困惑,我显然无法WHAT在字符串连接中调用该方法?

my $object = 'Camelia';

say $object;
say $object.WHAT;
say "^name: The object is a " ~ $object.^name;
say "WHAT: The object is a " ~ $object.WHAT;
Run Code Online (Sandbox Code Playgroud)

输出显示调用^name作品(从元方法元模型:: ClassHOW),但Perl 6的被迷惑.WHAT,仿佛有一个优先问题.

Camelia
(Str)
^name: The object is a Str
Use of uninitialized value of type Str in string context
Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed.  in block <unit> at meta_methods.p6 line 7
WHAT: The object is …
Run Code Online (Sandbox Code Playgroud)

perl6 raku

10
推荐指数
2
解决办法
381
查看次数

我应该用Perl 6计算序列还是范围?

Perl 6有懒惰列表,但它也有无界的Range对象.您应该选择哪一个按整数计算?

并且有两个点的无界范围:

0 .. *
Run Code Online (Sandbox Code Playgroud)

有三个点的Seq(序列):

0 ... *
Run Code Online (Sandbox Code Playgroud)

A Range使用它们的自然顺序生成连续的东西列表.它继承自Iterable,但也是Positional,因此您可以索引范围.您可以检查是否有某些内容Range,但这不是任务的一部分.

Seq只要它知道如何到达下一个元素,A 就可以生成你喜欢的任何东西.它继承自Iterable,还有PositionalBindFailover,它Positional通过缓存和列表转换来伪造东西.如果你只是从一个元素转移到另一个元素,我认为这不是什么大问题.

我在这上面来回走动.目前我在想它的范围.

range perl6 seq raku

10
推荐指数
2
解决办法
297
查看次数

如何在Perl 5中定义解析语法?

我最近决定看看Perl,当面对Perl 5 vs 6时,由于它的成熟和大量的支持,我选择了5.

然而,Perl 6的一个真正引起我兴趣的是grammar关键字,允许用户定义一种可用于解析复杂文本的语言语法.在其他语言中,通常需要外部库或手动解析实现.

既然我已经确定了Perl 5,那么Perl 5中的Perl 6 grammar关键字(或构建语法的其他功能)是否有任何粗略的等价,内置或其他?

perl parsing perl6 raku

10
推荐指数
1
解决办法
622
查看次数

Perl 6中的"等待做什么"是什么?

我在Perl 6中看到以下代码:

await do for @files -> $file {
    start {
       #do something ...    }
}
Run Code Online (Sandbox Code Playgroud)

它以异步模式运行.为什么上面的代码需要dodoPerl 6 的目的是什么?有人可以详细解释上面的代码吗?

还有一个选项可以写这样的东西:

for @files -> $file {
    start {
       #do something ...    }
}
Run Code Online (Sandbox Code Playgroud)

并等待承诺履行的代码?

perl6 raku

10
推荐指数
1
解决办法
234
查看次数

我可以在Perl 6中使用独立签名作为签名吗?

我正在玩一个带有多个开关的命令行程序的Perl 6实现.签名MAIN非常复杂,有点混乱.我想知道是否有办法在其他地方定义签名并告诉子程序使用什么:

# possibly big and messy signature
my $sig;
BEGIN { $sig = :( Int $n, Int $m ) };

multi MAIN ( $sig ) {
    put "Got $n and $m";
    }
Run Code Online (Sandbox Code Playgroud)

MAIN即使在MAIN编译之前设置了签名,也看不到签名中的变量:

===SORRY!=== Error while compiling /Users/brian/Desktop/signature.p6
Variable '$n' is not declared
at /Users/brian/Desktop/signature.p6:7
Run Code Online (Sandbox Code Playgroud)

我认为在编译时生成方法并根据各种因素选择签名可能很方便.

signature perl6 raku

10
推荐指数
1
解决办法
280
查看次数

`@ $ array`和其他结构的含义

我还在学习Perl 6.请原谅我的无知.我正在阅读Operators页面,我在表的开头发现了一些不熟悉的结构:

A   Level   Examples
N   Terms   42 3.14 "eek" qq["foo"] $x :!verbose @$array
Run Code Online (Sandbox Code Playgroud)

我重新读取类Array和类Scalar但我无法@$xyz在这些部分中找到构造.做什么:!@$意味着什么?有没有一个方便的地方收集和解释所有这些象征性的结构?

非常感谢你 !!

arrays scalar perl6 raku

10
推荐指数
1
解决办法
158
查看次数

简单的方法来映射顺序列表元素组

法线贴图将函数应用于列表元素,并生成结果列表的元素.例如,如果列表是(1, 2, 3,)并映射了square函数,则会得到一个新列表(1, 4, 9,).

有没有办法映射列表的一组顺序元素?例如,如果列表是<8 2 7 2 6 9 4 9 6 1>,我想计算列表中每2个元素的总和<10 9 9 8 15 13 13 15 7>

我当然可以写一个例程来遍历列表.但我正在寻找一种更简单的方法,如减少运算符或像聚集/采取.

mapping list perl6 sequential raku

10
推荐指数
2
解决办法
159
查看次数

标签 统计

perl6 ×10

raku ×10

arrays ×1

list ×1

mapping ×1

module ×1

oop ×1

parsing ×1

perl ×1

rakudo ×1

range ×1

scalar ×1

seq ×1

sequential ×1

signature ×1