首页 文章
  • 4 votes
     answers
     views

    Perl 6:maxpairs警告未定义值的字符串化

    看起来 maxpairs 不喜欢在具有未定义值的列表上调用: > my @foo; @foo[2] = 4; say @foo.maxpairs; Use of uninitialized value of type Any in string context. Methods .^name, .perl, .gist, or .say can be used to stringify it...
  • 4 votes
     answers
     views

    带有Str的Perl6 NativeCall被编码('utf16')得到随机损坏的结果

    我使用 NativeCall 在perl6脚本中映射 GetFullPathName windows API,因此我编写了以下内容: #!perl6 use NativeCall; constant \WIN32_MAX_PATH = 260; #I may use directly $path.IO.absolute() sub Win32-GetFullPathName( ...
  • 3 votes
     answers
     views

    我们如何在子例程中指定Callable参数的属性

    这来自于这个perl6 / doc问题,它也引用了IRC Channels 中的这些问题 documentation指定如何使用Signature literal约束可调用的参数: sub f(&c:(Int, Str)) { say c(10, 'ten') }; (这会将函数参数限制为仅将以Integer和String作为参数的参数) . 但是,在某些其他情况下,可以使用 wh...
  • 5 votes
     answers
     views

    如何禁用Perl 6 REPL创建.precomp

    每次运行 perl6 进入 REPL 模式时,它都会创建一个 .precomp 目录,这也会降低提示的外观 . 如果 .precomp 目录已存在,则提示几乎立即出现,否则 perl6 需要几秒钟才能创建它 . 有没有办法禁用此功能?
  • 2 votes
     answers
     views

    如何在IRC :: Client中使用certfp

    到目前为止,我已经将IRC::Client用于了许多IRC机器人,我也想将它用于新项目 . 但是,这次我需要使用certfp进行bot身份验证 . A search for "certfp" on the module's GitHub repository没有结果 . 是否可以使用证书配置 IRC::Client ,以便我可以使用certfp对我的下一个IRC bot进行身...
  • 8 votes
     answers
     views

    Perl 6在键入数组时报告“无法取消装箱类型对象”

    我怀疑这可能是Rakudo的一个错误,但我今天刚开始玩Perl 6,所以我很有可能犯了一个错误 . 在这个简单的程序中,在sub中声明一个类型化数组似乎会使Perl 6编译器生气 . 删除数组上的类型注释可以消除编译器错误 . 这是一个简单的素数查找程序: #!/usr/bin/env perl6 use v6; sub primes(int $max) { my int @vals =...
  • 8 votes
     answers
     views

    为什么Perl 6会为我的子集类型抛出X :: AdHoc异常?

    这是Perl 6中报告的错误:X::AdHoc instead of X::TypeCheck::Binding with subset parameter,于2015年11月首次报道 . 在玩我的Perl 6模块Chemisty::Elements时,我遇到了一个我没想到的Exception问题 . 我定义了一个类型 ZInt ,它将数字限制在周期图表上找到的序数(我在这里伪造了一点) . 然...
  • 6 votes
     answers
     views

    如何在Perl 6中的多值迭代期间注意缺失值?

    在多值迭代期间,如果我们用完了值,则不会在当前版本的Rakudo中处理最后一组值 . my @arr = 1, 2, 3, 4, 5, 6 for @arr -> $a, $b, $c, $d { say $a say $b say $c say $d } 结果是 1 2 3 4 ,下降 5 和 6 . 那么我能以哪种方式获得被删除的元素?
  • 7 votes
     answers
     views

    如何在Perl 6中重新对象?

    另一个问题可能是“我如何继承内置类型?” . 我真的有两个问题,但它们都与我正在玩的一样 . 首先,当我想进一步限制它时,我可以创建一个类型的子集 . 我用 MyInt 做到了,它接受任何 Int . 我通过 MyInt 声明一个变量并分配给它,但当我检查它的名字时,我得到了 Int . 那么,那是什么呢? subset MyInt where * ~~ Int; my MyInt $b =...
  • 3 votes
     answers
     views

    我可以在方法中更改Perl 6俚语吗?

    Perl 6 Regex是一个更具体的类型Method,所以我有一个想法,也许我可以用常规方法做一些黑色魔法,产生同样的东西 . 我特别好奇这样做而不改变任何语法 . 但是,看看Perl6/Grammar.nqp(我几乎不了解),这真的不是一个继承的东西 . 我认为,根据我的阅读,Perl 6语法在看到一个正则表达式声明符时会切换slangs(子语言) . 也就是说,不同的语法解析 regex {...
  • 5 votes
     answers
     views

    我可以将Perl 6程序限制为在特定实现下运行吗?

    dd例程是一个特定于Rakudo的特性,但's incidental to my question. Is there a way inside a program to check the implementation and bail out if it'不是正确的特性?我必须自己做吗? die "Unsupported VM" unless $*VM ~~ m/^ 'mo...
  • 5 votes
     answers
     views

    Perl 6块是一个参数还是无参数?

    什么是Perl 6方法来区分没有显式签名的块中的参数和无参数之间的区别?我没有任何实际用途,但我很好奇 . 没有显式签名的块将值放入 $_ : my &block := { put "The argument was $_" }; 签名实际上是 ;; $_? is raw . 这是一个可选参数 . 由于没有显式签名,因此未在块中定义 @_ 变量 . 没有参数, $_...
  • 3 votes
     answers
     views

    Rakudo Perl 6:使用Readline模块时屏幕清晰

    这是我的测试程序: use Readline; shell 'clear'; my $r = Readline.new; loop { my $a = $r.readline("> "); {say ''; last} if not defined $a; $r.add-history( $a ); say $a; } 输入任何字符串后,它将退出并显...
  • 3 votes
     answers
     views

    将函数指针放在Perl6 NativeCall CStruct中

    试图与一个C库接口,该库带有一个带有一堆指针的结构,指向它在各个点调用的函数 . 像这样的东西: struct callbacks { int (*foo)(int); int (*bar)(int); } int set_callbacks(callbacks *cbs); 我可以回复: sub foo-callback(int32 --> int32) {...} s...
  • 6 votes
     answers
     views

    奇怪的消息在NativeCall perl6模块中声明指针[void]

    这些代码段可能看起来很奇怪,这是因为我从原始代码开始并切断了碎片,直到我到达了复制错误的最小指令集 . 所以忍受明显的无用 . 有两个perl6模块,一个是 use ,另一个是程序 . 这是第一个模块: unit class test1; use NativeCall; use test2; method test { my Pointer[void] $dummy .= new; } ...
  • 5 votes
     answers
     views

    perl6:如何为函数的参数指定多个要求?

    我有一个特殊的函数,它接受一个列表,列表的每个成员必须满足多个要求 . 如何在perl6函数中设置它? sub specialFunc(List $x) {}; (1) $x is a list # easy, List $x, but what about the following: (2) each member of $x is numeric (3) each member of $x...
  • 6 votes
     answers
     views

    如何使子子程序参数成为readwrite

    假设我有一个交换两个给定参数的子程序 . 它在逻辑上需要具有读写参数 . sub swap($l, $r) { my $tmp = $l; $l=$r; $r=$tmp; } 我收到错误: 无法分配给只读变量($ l)或值 我认为我不能像perl5那样尝试 \$param . 我想我应该尝试使用 := ,但文档中没有提到任何有关函数参数的内容 . 如何传递参数作为对此子例...
  • 2 votes
     answers
     views

    如何绕过Perl 6签名中的slurpy参数?

    我有这个简短的例子,我想取出一个数组的两个元素,并用一个数组元素替换它: my @digits = <1 2 3>.map: { [ $_, $_ ] }; say @digits; # [[1 1] [2 2] [3 3]] @digits.splice: 0, 2, [4,4]; say @digits; # [4 4 [3 3]] 这不起作用,因为splice替换实际上是...
  • 7 votes
     answers
     views

    如何指定包含我接受的所有内容的Perl 6签名并排除其他所有内容?

    我在这个问题中的假设是,我指定的签名完全描述了方法将接受的所有内容 . 显然我错了,但无论如何我想要那样做 . 如果我没有在签名中指定它,我不希望其他人能够提供它作为一个认为它会做某事的论据 . 我为方法创建了一个带有单个位置参数的签名,我希望它只接受单个位置参数 . 但是,它也接受命名参数而无需投诉: class SomeClass { method something ( Int $n...
  • 3 votes
     answers
     views

    我怎么知道我可以调用具有特定签名的Perl 6方法?

    在Perl 6中,一种多调度语言,您可以找出是否存在与名称匹配的方法 . 如果有,您将获得与该名称匹配的Method对象列表: class ParentClass { multi method foo (Str $s) { ... } } class ChildClass is ParentClass { multi method foo (Int $n) { ... }...
  • 4 votes
     answers
     views

    如何将正则表达式作为参数传递给Perl 6中的子例程

    可能我做的事情完全错了,但有没有办法修改和组合 regexes 使用子程序?下面的程序不会编译 . sub a(Regex $r1) { return rx/ <$r1> a / } my regex letter_b { b }; my $new = a(letter_b); say $new;
  • 9 votes
     answers
     views

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

    我正在玩一个带有几个开关的命令行程序的Perl 6实现 . MAIN 的签名非常复杂,有点混乱 . 我想知道是否有办法在其他地方定义签名并告诉子程序使用什么: # possibly big and messy signature my $sig; BEGIN { $sig = :( Int $n, Int $m ) }; multi MAIN ( $sig ) { put &quot...
  • 7 votes
     answers
     views

    只有当它表示一个整数时,我怎样才能将Str转换为Int?

    在Perl 6中,您可以指定可以强制类型的类型 . 如果你需要一个 Int 但得到一些可以转换成 Int 的东西 . 当您不希望 Int 和 Str 的单独候选者(其中字符串表示整数值)时,这很方便 . 但是,转换似乎有点激进,因为转换不仅改变了类型,而且愿意改变数据 . 这部分是改变类型的混淆和将数字截断为整数的预期操作的问题 . 从概念上讲,这些是不同的想法,但它们在 Str.Int 中交织在...
  • 5 votes
     answers
     views

    子集块(或一般的Callables)

    这question was originally posted by lookatme in the Perl6 IRC channel . 最初的意图是constrain a Callable by using subsets或任何其他可能的方式 . 它适用于签名,但是: subset WalkCb of Callable where *.signature ~~ :(Int $a); my ...
  • 24 votes
     answers
     views

    随着Perl 6实现的成熟,我们可以期待什么性能提升?

    每次我下载Rakudo Perl 6的新副本时,我都运行以下表达式,以了解其当前的性能: say [+] 1 .. 100000; 并且速度一直在增加,但每次计算都有明显的延迟(几秒) . 作为比较,Perl 5(或其他解释语言)中的类似内容几乎立即返回: use List::Util 'sum'; print sum(1 .. 100000), "\n"; 或者在Rub...
  • 6 votes
     answers
     views

    Perl 6有REPL shell吗?

    我知道我可以使用没有参数的 perl6 来启动一个最小的REPL shell,但是我想知道是否有一个更好的REPL shell,比如Python的IPython或者Perl 5的 Reply . 运行 perl6 时,我收到以下警告: $ perl6 I ran into a problem while trying to set up REPL completions: Continuing ...
  • 9 votes
     answers
     views

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

    老人Perl 6 faq说:"Rakudo, a Perl 6 compiler based on Parrot, allows compilation to bytecode, and a small wrapper exists that can pack up a bytecode file and parrot into a single executable." 因此...
  • 6 votes
     answers
     views

    安装模块Perl 6失败 - 没有可用于Perl v6.c的编译器

    我通过以下方式安装了Perl 6解释器Rakudo: sudo apt-get install rakudo 我正在学习有关安装Perl 6模块的教程: http://perl6maven.com/how-to-install-perl6-modules 在最后一步中我得到了这个错误: perl6 bootstrap.pl===SORRY!=== Error while compiling ...
  • 4 votes
     answers
     views

    无法使用线程将数据插入到带有DBIish的PostgreSQL中 . 出了什么问题?

    编辑:这是由莫里茨解决的 . 我在行上的代码中添加了一个注释错误 . 我的应用程序是一个与游戏客户端交谈的Web服务器 . 服务器是多线程的,Postgres允许 . 在将客户端数据加载到数据库中时,我注意到并行请求因几个不同的错误而失败,这些错误对我来说都没有意义 . 这个简短的测试用例将嵌套的哈希转储到数据库中 . 在没有 start 的情况下运行时,它可以完美运行 . 使用线程运行时,它几乎...
  • 8 votes
     answers
     views

    你怎么能创建Perl 6 REPL插件?

    Perl 6 comes with a REPL;并且,一旦_773351_不清楚Linenoise如何插入REPL以提供该功能,REPL就会选择Linenoise这样的插件 . 我没有't seen it documented anywhere, either. If I want to create my own plugin for providing, let'说,其他类型的标签完成(Li...

热门问题