标签: raku

有什么区别:D和:D:?

我正在浏览例程中Perl 6文档shift并看到了这个片段:

定义为:

multi sub    shift(Array:D )
multi method shift(Array:D:)
Run Code Online (Sandbox Code Playgroud)

我知道:D指的Array就是definedAnyNil,但有什么:D:?搜索起来非常困难.

类型签名文档的这一部分包含更多语法示例,但没有(据我所知)解释它.

perl6 raku

15
推荐指数
2
解决办法
344
查看次数

如何使用常量值作为哈希键

是否有一种简单的方法可以将定义常量的值用作Perl6中的散列/对键?

例如 :

constant KEY = "a string";
my %h = ( KEY => "a value" );
Run Code Online (Sandbox Code Playgroud)

这将创建"KEY"而不是"字符串"的键.

我可以 :

my %h = ( "{KEY}" => "a value" );
Run Code Online (Sandbox Code Playgroud)

但这似乎有点笨重.我想知道是否有更好的方法?

perl6 raku

15
推荐指数
1
解决办法
178
查看次数

有没有一种程序化的方式来阐述 raku 中的“半风”?

我有这个工作:

my %pnt = %( cardinal => <N E S W>, 
             ordinal  => <N NE E SE S SW W NW>,
             half-winds => <N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW>,
            );
Run Code Online (Sandbox Code Playgroud)

我认为有可能以编程方式创建半风阵列。

然而,我可怜的尝试似乎更加冗长:

my @cards = <N E S W>; 
my @odds  = <NE SE SW NW>;
my @ords  = ( @cards Z @odds ).flat; 
my @mids  = ( ( @cards Z~ @odds ) Z ( @cards.rotate(1) Z~ @odds ) ).flat; …
Run Code Online (Sandbox Code Playgroud)

raku

15
推荐指数
3
解决办法
261
查看次数

如何开始使用Perl 6?

有人可以提供从Perl 6开始的材料链接吗?还有人可以指出已经用Perl 6开发的真实应用程序吗?

perl perl6 raku

14
推荐指数
3
解决办法
602
查看次数

Perl6是否支持与Perl5的__DATA__和__END__部分相同的内容?

perl6/Rakudo是否有相当于perl5 __DATA____END__部分的东西?

perl rakudo perl6 raku

14
推荐指数
2
解决办法
739
查看次数

如何在Perl 6中为现有类添加方法?

int类有一个方法is_prime,所以我想,只是笑声,我想一些其他方法增加Int了一些做数论的东西我的爱好项目.

我以为我可以这样做:

class Int {
    method is-even (Int:D $number ) returns Bool:D {
        return False if $number % 2;
        return True;
        }
    }

say 137.is-even;
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

===SORRY!===
P6opaque: must compose before allocating
Run Code Online (Sandbox Code Playgroud)

我不知道这是否意味着我不能这样做或者我做错了.

我可以很容易地创建一个继承自的新类Int,但这不是我感兴趣的:

class MyInt is Int {
    method is-even () returns Bool:D {
        return False if self % 2;
        return True;
        }
    }

my $n = MyInt.new(138);
say $n.is-even;
Run Code Online (Sandbox Code Playgroud)

我不是在寻找变通方法或替代解决方案.

perl6 raku

14
推荐指数
2
解决办法
515
查看次数

访问Perl6中的最后一个元素

有人可以解释为什么这会访问Perl 6中的最后一个元素

@array[*-1]  
Run Code Online (Sandbox Code Playgroud)

为什么我们需要星号*

做这样的事情不是更合乎逻辑:

@array[-1] 
Run Code Online (Sandbox Code Playgroud)

perl6 raku

14
推荐指数
3
解决办法
1885
查看次数

为什么Perl 6的正确关联性不对?

Clickbaity标题,但它太多了,不能放弃.我有这个运算符,我希望是正确的关联:

sub infix:<?> ( Int:D \n, Int:D \m  --> Int:D )
    is assoc<right>
    is equiv(&infix:<**>)
    { n ** m }

put "2**2**2**2 = ",      2**2**2**2;
put "2?2?2?2 = ",         2?2?2?2;
put "2? (2? (2?2) ) = ",  2? (2? (2?2) );
Run Code Online (Sandbox Code Playgroud)

这是不正确的联想:

2**2**2**2 = 65536
2?2?2?2 = 256
2? (2? (2?2) ) = 65536
Run Code Online (Sandbox Code Playgroud)

我做得不对(咳咳)?

perl6 associativity raku

14
推荐指数
1
解决办法
289
查看次数

perl6占位符变量和主题变量

Perl 6中同时存在占位符变量和主题变量。例如,以下两个语句相同

say ( $_ * 2 for 3, 9 );        # use topic variables                 
say ( { $^i * 2 } for 3, 9 );   # use placeholder variables
Run Code Online (Sandbox Code Playgroud)

在我看来,从主题变量中获得的唯一好处就是节省了一些键盘笔触。

我的问题是:是否存在用例,其中主题变量比占位符变量方便得多?

perl6 raku

14
推荐指数
2
解决办法
147
查看次数

为什么在Perl6序列上没有“每种”方法?

有时我会在Perl 6 REPL上开始编写方法调用链,例如:

".".IO.dir.grep(...).map(...).
Run Code Online (Sandbox Code Playgroud)

...然后我意识到我要对最终列表进行的操作是将每个元素打印在自己的行上。我希望序列具有某种each方法,因此我可以使用结束链.each(*.say),但是没有找到这样的方法。取而代之的是,我必须返回到该行的开头并前置.say for。感觉好像打乱了我的思想。

这是一个小麻烦,但是却让我感到震惊,我不知道我是否缺少一些简单的选择。我唯一想到的是».sayand .join("\n").say,但是前者可以对元素进行无序操作(如果我理解正确的话),而后者可以构造一个字符串,该字符串可能会很大,具体取决于输入列表。

perl6 raku

14
推荐指数
2
解决办法
262
查看次数

标签 统计

raku ×10

perl6 ×9

perl ×2

associativity ×1

rakudo ×1