我可能忽略了一些简单的事情,但是我不希望下面的代码失败。它表现得好像是我写的,die而不是fail在catch块中的。
无法正确处理故障,代码消失。
sub foo()
{
try {
say 1 / 0;
CATCH { default { fail "FAIL" } }
}
return True;
}
with foo() {
say "done";
}
else
{
say "handled {.exception.message}"
}
Run Code Online (Sandbox Code Playgroud)
输出:
FAIL
in block at d:\tmp\x.pl line 5
in any at d:\tmp\x.pl line 5
in sub foo at d:\tmp\x.pl line 4
in block <unit> at d:\tmp\x.pl line 11
Run Code Online (Sandbox Code Playgroud) I just installed perl6 on windows server and windows 7.
I want to port a script which is already running on openbsd to a windows machine.
I tested this code:
my $resp = await Cro::HTTP::Client.get('https://www.perl6.org/');
Run Code Online (Sandbox Code Playgroud)
And I'll get is this on both Windows machines:
C:\Users\Matthias\CommaProjects\testing>perl6 cro.pl6
Tried to get the result of a broken Promise
in block at C:\rakudo\share\perl6\site\sources\0609EA0BB03C70C2C15DB4B144D704
1C1059D14C (Cro::TLS) line 108
Original exception:
An operation first awaited:
in block at C:\rakudo\share\perl6\site\sources\A4ECA701FE96A8456AEB83692D
6B3C55AAFC964C (IO::Socket::Async::SSL) line 322
Died with the …Run Code Online (Sandbox Code Playgroud) 对于我正在编写的库,我在HOW上有一个属性,该属性使用handles特征将由另一HOW所完成的各种角色的方法委派给该HOW的实例。我的第一次尝试是这样的(尽管为了使它更易于阅读,这只会处理Metamodel::Naming):
class ParentHOW does Metamodel::Naming {
method new_type(ParentHOW:_: Str:D :$name!, Str:D :$repr = 'P6opaque' --> Mu) {
my ::?CLASS:D $meta := self.new;
my Mu $type := Metamodel::Primitives.create_type: $meta, $repr;
$meta.set_name: $type, $name;
$type
}
}
class ChildHOW {
has Mu $!parent;
has Mu $!parent_meta handles <set_name shortname set_shortname>;
submethod BUILD(ChildHOW:D: Mu :$parent is raw) {
$!parent := $parent;
$!parent_meta := $parent.HOW;
}
method new_type(ChildHOW:_: Mu :$parent is raw) {
my ::?CLASS:D $meta := self.new: :$parent;
Metamodel::Primitives.create_type: …Run Code Online (Sandbox Code Playgroud) 数学级数,例如以此处表示为数组的连续序列:
my @seq = my $a=0, {++$a} ... *;
for @seq[^10].kv {state $f=0; ($^k < 4 or $^k > 7) ?? say "a$^k = " ~ $^v !! (say "..." if $f ne 1; $f=1) };
Run Code Online (Sandbox Code Playgroud)
印刷品:
a0 = 0
a1 = 1
a2 = 2
...
a8 = 8
a9 = 9
Run Code Online (Sandbox Code Playgroud)
我的问题:1-是否有一种简单的方法可以只删除第一个元素,即a0 = 0从打印输出中删除?
2-可以使此代码更惯用吗?
谢谢。
它似乎在2019年10月的某个地方停止了。我认为Perl 6的开发仍在继续。那么,为什么没有更多人问有关Perl 6的问题了?
perl6中单例模式的正确实现是什么?
我试过这个,但我不知道如何在perl6中使用static关键字:
此问题最初由lookatmePerl6 IRC频道发布.最初的目的是通过使用子集或任何其他可能的方式来约束Callable.它适用于签名,但是:
subset WalkCb of Callable where *.signature ~~ :(Int $a);
my WalkCb $x = sub (Int $a) { return $a; };
Run Code Online (Sandbox Code Playgroud)
回报
«Type check failed in assignment to $x; expected WalkCb but got Sub (sub (Int $a) { #`(Sub...)? in block <unit> at <tmp> line 1??»
Run Code Online (Sandbox Code Playgroud)
声明的其他变体返回类似的消息.什么是正确的语法?
我正在尝试使用Apple文件系统(APFS)跟踪Perl 在macOS 上重命名的问题.我已经能够使用perls将其复制到至少5.12.3,但我的所有内容都是使用Apple LLVM版本9.1.0(clang-902.0.39.1)编译的.这些相同的perls在FAT或HFS +文件系统中没有这个问题.其他地方我没有注意到这个问题.
第一次运行它.我最终得到了一个Changes和一个Changes.bak.这正是我的预期.
再次运行它.您最终获得了更改和更改3文件.没有Changes.bak.这很奇怪.
再次运行它.我最终得到了一个Changes文件,Changes.bak和Changes 3.
再次运行它.我最终得到了一个Changes文件,Changes 3和Changes 4.再一次,没有Changes.bak.
如果我删除了这print条线,我无法理解这一点("医生,当我这样移动我的手臂时会疼,").
我重新命令文件句柄打开和关闭,但似乎没有解决任何问题.
我认为在文件系统级别发生了一些事情.所以我真的有两个问题:
这是一个错误,在什么级别?rename在我开始弄乱文件句柄之前,是否保证无法完成它需要做的任何事情?
我想读取旧文件并创建一个在中间插入一些数据的新文件.复制标题,插入新行,将所有旧行输出到新文件中.我可以写一个临时文件并稍后再移动,但我还做其他蠢事吗?
如果您可以重现此行为但不知道,请发表评论.也许我的系统还有其他奇怪之处.
my $changes = "Changes";
my $bak = $changes . ".bak";
rename $changes, $bak or die "Could not backup $changes. $!\n";
open my $in, '<', $bak or die "Could not read old $changes …Run Code Online (Sandbox Code Playgroud) 我怎么知道使用时我是否真的需要返回l值FALLBACK?
我正在使用,return-rw但我只想return在可能的地方使用。我想跟踪我是否实际上已修改过%!attrs或仅在FALLBACK调用时读取了该值。
或者(替代方案B)我可以附加回调或类似的东西%!attrs来监视更改吗?
class Foo {
has %.attrs;
submethod BUILD { %!attrs{'bar'} = 'bar' }
# multi method FALLBACK(Str:D $name, *@rest) {
# say 'read-only';
# return %!attrs{$name} if %!attrs«$name»:exists;
# }
multi method FALLBACK(Str:D $name, *@rest) {
say 'read-write';
return-rw %!attrs{$name} if %!attrs«$name»:exists;
}
}
my $foo = Foo.new;
say $foo.bar;
$foo.bar = 'baz';
say $foo.bar;
Run Code Online (Sandbox Code Playgroud) 我正在寻找一些有关如何在Raku / perl6中按第n个文件读取文本文件的建议。
在生物信息学研究中,有时我们需要以一种不太直接的方式来解析文本文件。例如Fastq文件,一次以4行为一组存储数据。甚至更多,这些Fastq文件成对出现。因此,如果我们需要解析此类文件,则可能需要执行以下操作:从第一个Fastq文件读取4行,从第二个Fastq文件读取4行,然后从第一个Fastq文件读取接下来的4行,然后读取第二个fastq文件中的下4行,......
关于解决此问题的最佳方法,我是否可以提出一些建议?Raku的“ IO.lines”方法似乎能够一次处理每一行。但不确定如何处理每第n行
一个示例fastq文件对:https : //github.com/wtwt5237/perl6-for-bioinformatics/tree/master/Come%20on%2C%20sister/fastq 我们之前对“ IO.lines”进行的尝试:https:// github.com/wtwt5237/perl6-for-bioinformatics/blob/master/Come%20on%2C%20sister/script/benchmark2.p6