小编tin*_*ino的帖子

通过索引从字符串中删除一些字符(Raku)

常见问题解答:在 Raku 中,如何根据索引从字符串中删除一些字符?

假设我想删除索引 1 到 3 和 8

xxx("0123456789", (1..3, 8).flat);  # 045679
Run Code Online (Sandbox Code Playgroud)

raku

15
推荐指数
7
解决办法
364
查看次数

Raku Regex中单管和双管的区别(| Vs ||)

Raku 的正则表达式中有两种类型的交替:|||。有什么不同 ?

say 'foobar' ~~ / foo || foobar /  # ?foo?
say 'foobar' ~~ / foo | foobar /   # ?foobar?
Run Code Online (Sandbox Code Playgroud)

raku nqp

9
推荐指数
1
解决办法
160
查看次数

检查列表是否为空 (Raku)

FAQ:在 Raku 中如何检查列表是否为空?是否有比以下更惯用的方法:

my @l = ();
say @l.elems == 0;
say @l == ();
say @l.Bool;
Run Code Online (Sandbox Code Playgroud)

列表上文档推荐智能匹配

say $l ~~ ();
Run Code Online (Sandbox Code Playgroud)
  1. 你知道其他方法吗?
  2. () === ()即使"" === ""是正确的,您能否解释为什么 是错误的:我对此不清楚。

raku

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

如何杀死一个线程,停止 Raku 中的承诺执行

我正在寻找等待停止(发送异常)到SIGINT. 文档中给出的示例退出了整个过程,而不仅仅是一名工人。

有人知道如何“杀死”、“取消调度”、“停止”正在运行的线程吗?

这是针对p6-jupyter-kernel问题或这个REPL 问题

当前的解决方案是重新启动 repl 但不杀死被阻塞的线程

await Promise.anyof(
  start {
      ENTER $running = True;
      LEAVE $running = False;
      CATCH {
          say $_;
          reset;
      }
      $output :=
        self.repl-eval($code,:outer_ctx($!save_ctx),|%adverbs);
  },
  $ctrl-c
);
Run Code Online (Sandbox Code Playgroud)

asynchronous raku

7
推荐指数
2
解决办法
231
查看次数

如何打印对象,输入 nqp

如何在 NQP 中打印对象?(用于调试目的)

class Toto { has $.member = 42; }
class Titi { has $.member = 41; has $.toto = Toto.new }
my $ti = Titi.new;
say $ti;
# Titi.new(member => 41, toto => Toto.new(member => 42))
dd $ti;
# Titi $ti = Titi.new(member => 41, toto => Toto.new(member => 42))
Run Code Online (Sandbox Code Playgroud)
  • 在 NQP 中似乎更复杂
class Toto { has $!member; sub create() {$!member := 42}};
class Titi { …
Run Code Online (Sandbox Code Playgroud)

raku nqp

7
推荐指数
1
解决办法
89
查看次数

合并哈希(乐)

FAQ,Int Raku,如何合并,合并两个哈希?

说:

my %a = 1 => 2;
my %b = 3 => 4, 5 => 6
Run Code Online (Sandbox Code Playgroud)

如何获得%c = 1 => 2, 3 => 4, 5 => 6

raku

7
推荐指数
1
解决办法
155
查看次数

检查字符串是否包含子字符串。此外,获取匹配的索引和数量(乐)

FAQ:在 Raku 中,如何检查String 是否包含子字符串?在哪里和多少次?我想要 3 个功能,例如:

xxx-bool("az and az and az again", "az");  # True 
xxx-num("az and az and az again", "az");   # 3
xxx-list("az and az and az again", "az");  # (0 7 14) 
Run Code Online (Sandbox Code Playgroud)

PS:Routines indexrindex很酷,但只有一个匹配。

相关链接:

raku

6
推荐指数
1
解决办法
263
查看次数

如何覆盖 NQPMatch.Str 函数

...或者如何从匹配的文本中独立地更改$<sigil>.Str值。是的,我在问如何欺骗上面的语法(即打电话给)我。token sigil { ... }

我正在尝试为 Raku编写一个没有 sigil俚语

所以我想要nogil令牌,匹配任何东西<?>以返回字符串化的 NqpMatch:$<sigil>.Str到 '$'。

目前,我的令牌符号看起来像这样

token sigil {
    | <[$@%&]>
    | <nogil> { say "Nogil returned: ", lk($/, 'nogil').Str; # Here It should print "$"
              }
}
token nogil-proxy {
    | '€'
    | <?>
    {log "No sigil:", get-stack; }
}
Run Code Online (Sandbox Code Playgroud)

并且带有该方法的方法应该返回一个NQPMatchwith 方法Str被覆盖

method nogil {
    my $cursor := self.nogil-proxy;
    # …
Run Code Online (Sandbox Code Playgroud)

raku nqp

6
推荐指数
1
解决办法
75
查看次数

如何在 Raku 中列出动态和编译时变量

在 Raku 中,我如何列出:

  1. 动态变量
  2. 编译时变量
  3. 套餐
  4. 伪包

为了列出作用域中的词法变量,我使用say ::;Pseudo packages

introspection raku

6
推荐指数
1
解决办法
87
查看次数

如何在 Raku 中删除多方法

如何使用将在已经定义的方法之前调用的多方法来扩充类?

我试图使负标:@arr[-1]在喜欢这个文章,但不改变源。

所以我用以下方法扩充Array

augment class Array { 
    proto method AT-POS(Array:D: Int:D $i where <0 ) {
        say "AT-POS called";
        my $pos = -1;
        my $ix = $pos + self.elems;
        return self.AT-POS($ix);
    }
};
Run Code Online (Sandbox Code Playgroud)

但正如文档中所述

Please note that adding a multi candidate that differs only
in its named parameters will add that candidate behind the already defined one
and as such it won't be picked by the dispatcher.
Run Code Online (Sandbox Code Playgroud)

所以我的 multi 永远不会被调用:

say .signature …
Run Code Online (Sandbox Code Playgroud)

raku nqp

6
推荐指数
1
解决办法
78
查看次数

标签 统计

raku ×10

nqp ×4

asynchronous ×1

introspection ×1