raku相关内容
考虑这些都采用单个命名参数的子例程.命名参数应该是可选的,我没有看到任何说明有例外. 没有类型约束就没有问题;命名参数不是必需的.使用可以接受类型对象的类型约束(无注释、:U 和 :_)就没有问题了. 例程'quux'的参数'$quux'必须是'Int'类型的对象实例,不是“Int"类型的类型对象.你忘记了'.new'吗?在/Users/brian/Desktop/type.p6 第 16
..
我希望能够在 Perl6 中运行具有可变数量参数的函数,但是在阅读了 https://docs.perl6.org/language/functions#Arguments 我不知道怎么做.我看到了许多其他语言的链接,并警告说“具有类似标题的问题经常被否决",但我在文档或 StackOverflow 的任何地方都没有看到这一点. 我想做这样的事情: some-test($v1, $v2)
..
如何在 Perl6 中编写自定义访问器方法? 如果我有这门课: class Wizard {has Int $.mana is rw;} 我可以这样做: 我的向导 $gandalf .= new;$gandalf.mana = 150; 假设我想在不放弃 $gandalf.mana = 150; 符号的情况下向 Perl6 类中的 setter 添加一点检查(换句话说,我不想写这个:
..
我以前只使用 bash 正则表达式、grep、sed、awk 等.在尝试了 Perl 6 regexes 之后,我的印象是它们的工作速度比我预期的要慢,但可能是因为我处理它们的方式不正确.我做了一个简单的测试来比较 Perl 6 和 bash 中的类似操作.这是 Perl 6 代码: my @array = "aaaaa" .. "fffff";说 +@array;# 7776 = 6 ** 5
..
我有一个包含多个 main 的包,我想定义几个选项: 我的代码是这样的: package Perl6::Documentable::CLI {proto MAIN(|) 是 export {*}我的 %*SUB-MAIN-OPTS = :named-everywhere;多主(“设置") { ... }多主 (“开始" ,str :$to
..
我正在使用 perl6 正则表达式匹配具有最小长度的重复任意字符序列. 阅读完https://docs.perl6.org/language/regexes#Capture_numbers 并调整给出的示例,我使用“外部变量"编写了此代码: #使用一个额外的变量 $cperl6 -e '$_="bbaaaaawer";/((.){} :my $c=$0; ($c)**2..*)/&&打印
..
Perl 6 Regex 是一种更具体的 方法,所以我有一个想法,也许我可以在产生同样事情的常规方法中做一些黑魔法的事情.我特别好奇在不改变任何语法的情况下这样做. 但是,查看 Perl6/Grammar.nqp(我几乎不明白),这真的不是继承的东西.我认为,根据我的阅读,Perl 6 语法在看到正则表达式声明符之一时会切换俚语(子语言).也就是说,不同的语法解析了 regex { ...
..
我想知道冒号与 Perl 6 中的方法和函数调用有什么关系.作为记录,我使用的是基于 MoarVM 版本 2015.05 构建的 perl6 版本 2015.05-55-gd84bbbc. 我刚刚在 Perl6 规范测试(S32-io)(我添加了评论): $fh.print: "0123456789A";# 将“0123456789A"打印到文件中 据我所知,这相当于: $fh.pri
..
假设有一个包含 sub MAIN 的模块,可以提高启动速度.不幸的是,我无法以这种方式使用 named-anywhere 功能.我的导出是否损坏了或者我该怎么办? 使用v6.c;单元模块 My::Main;我们的 %*SUB-MAIN-OPTS 是 export = ('named-anywhere' => True);多子主()是出口{说 1;}multi sub MAIN('a', :$pa
..
在试图更好地理解无符号变量以及它们与 $ 有符号变量的区别时,我发现,与 $ 有符号变量不同,无符号变量在它们之后不能被反弹已经初始化: 我的 $a = 42;我的 $b := $a;$b := 42;# 没有异常产生我的 \c := $a;c := 42;# OUTPUT: «不能在这个左侧使用绑定运算符» 这是故意的吗?如果是这样,当 $ 标记变量没有被禁止时,禁止无标记变量重新绑定是否
..
我使用 MixHash 将两个哈希与 Bag add (+) 运算符组合在一起.这似乎有效 - 但是......我有点惊讶联合的结果需要重新强制回MixHash. 我的猜测是 Bag add (+) 中缀运算符首先将所有内容强制转换为 Bag 并将结果作为 Bag 返回.这对我来说可能有风险,因为我的一些权重是负的(因此首先是混合).这会正确添加负权重吗? 或者,是否有混合加 (+)
..
为什么没有导出带有 := 绑定的变量的值? $ cat myModule.pm6我们的 $a 是 export = 42;我们的 $b 是 export := $a;$猫程序.p6使用我的模块;说 $a;说 $b;$ perl6 程序.p642(任何)# 为什么? 解决方案 our 范围的变量实际上只是一个词法变量(如 my),它 - 而不是为每个范围新创建一个 Scalar - 通过绑定到
..
概要 05 提到 Perl 6 不会将变量插入到正则表达式中,但您可以将外部变量与模式相关联.据我所知,文档没有提到这个功能.我认为人们仍然希望以某种方式从字符串构建一个模式,所以我很好奇这将如何工作. 这是一个演示现在发生的情况的程序.我不知道这是应该发生的事情还是任何人的意图.我在模式中插入一个变量.如果您查看带有 .perl 的 $r,您会看到变量名称.然后,我应用模式并且它匹配.我改
..
假设我想要 a、b 和 c 中 2 个字母的所有排列. 我能做到: my @perm = .combinations(2)».permutations;说@perm;# [((a b) (b a)) ((a c) (c a)) ((b c) (c b))] 这很接近,但不完全是我需要的.我如何“展平"它以便我得到: # [(a b) (b a) (a c) (c a) (b c) (c
..
我知道我可以安排一个 Promise 在给定的时间内保持 my $promise = Promise.in($seconds); 但是我如何安排它被破坏?具体来说,我正在考虑一个会“超时"的承诺,这样它就可以保留一定的时间,否则就会失败. 我可以用另一个 Promise 来做到这一点,就像这样: my $promise = Promise.new;...Promise.in($seco
..
我正在使用 Data::Printer 在 Perl6 中打印数据,这是一个很棒的包,但我正在尝试更改参数,但我无法更改. 例如,我想要: HG00112 {获得网站{9:10162 0,9:10272 var{HG00112}{gained_site}{9:10162},9:10326 var{HG00112}{gained_site}{9:10162},...}(绑定到 Perl6::
..
一些简单的 Inline::Perl5 代码返回一个列表,但它似乎返回项目的计数而不是实际列表. 改变涉及的项目数量会改变计数. 使用内联::Perl5;我的 $p5 = Inline::Perl5.new;我的 $perl5_code = q:to/END/;子 p5_data {我的@monsters = qw(哥斯拉斑点刺痛孔多丽丝迪);返回@monsters;}p5_data();
..
我可以在 Perl 5 中使用 system 来运行外部程序.我喜欢将 system 视为 Perl 中的微型“Linux 命令行".但是,我在 Perl 6 中找不到 system 的文档.什么是等效的? 解决方案 除了使用 shell 或 run,它替换了 Perl 5 中的 system,你也可以使用NativeCall 调用 libc system 函数. 在我的 Windo
..
我知道 perl6 将明确允许导入 perl5 代码,但我不能这样做. 这是 perl6 代码 使用 perl5:Net::FTP; 它报告了一个错误 是否有任何配置问题或尚未准备好? 解决方案 使用 Inline::Perl5 将任意 Perl 代码嵌入 Raku 或 use Perl 库,就像它们是 Raku 库一样. Inline::Perl5 在 MoarVM
..
有没有办法获得当前进程的 Perl 可执行文件的绝对路径? $^X 会给我 Perl 可执行文件名称,但文档指出它有时会是一个相对路径,例如在 OS X 上这似乎是正确的. ExtUtils::MakeMaker 似乎有一些魔法来找到绝对路径,因为它在我的 OS X 上生成的 Makefile 包含 PERL =/usr/local/bin/perlFULLPERL =/usr/lo
..