另一个关于hash作为论据的问题trans.在下面的代码中,简单地hash给出了一个不正确的结果,但是替换它keys并values使其正确.怎么了?
my @alph1 = <a+ b+ c+ d+ e+ f+>;
my @alph2 = <A_ B_ C_ D_ E_ F_>;
my %h;
%h{ @alph1 } = @alph2;
my $str = 'a+bc de+f';
my $text = $str.trans(%h);
say $text; # A_BC DE_F (incorrect)
$text = $str.trans(%h.keys => %h.values);
say $text; # A_bc dE_f (correct)
Run Code Online (Sandbox Code Playgroud) 这就是我想要做的.它应该很简单,但我无法弄清楚如何正确地做到这一点.
> my @search_keys = <bb cc dd>
[bb cc dd]
> my $search_junc = @search_keys.join('|')
bb|cc|dd
> "bb" eq $search_junc
False
Run Code Online (Sandbox Code Playgroud) say "This is a very long line, and it seems it will not fit my screen, but alas, I don't know how to split it without getting an additional newline";
Run Code Online (Sandbox Code Playgroud)
如何"..."在输出中没有得到不需要的换行符的情况下将其分成几行(我的意思是在代码中)?我\在换线之前考虑过,但它不起作用.
应该很简单,但我无法应付它.
我想匹配与as 完全相同的bs数.所以,以下
my $input = 'aaabbbb';
$input ~~ m:ex/ ... /;
Run Code Online (Sandbox Code Playgroud)
应该产生:
aaabbb
aabb
ab
Run Code Online (Sandbox Code Playgroud)
UPD:以下变种不起作用,可能是因为@ smls的答案中:ex提到的bug (但更可能是因为我犯了一些错误?):
> my $input = "aaabbbb";
> .put for $input ~~ m:ex/ (a) * (b) * <?{ +$0 == +$1 }> /;
Nil
> .put for $input ~~ m:ex/ (a) + (b) + <?{+$0 == +$1}> /;
Nil
Run Code Online (Sandbox Code Playgroud)
这个,:ov和?,工作:
> my $input = "aaabbbb";
> .put for $input ~~ m:ov/ …Run Code Online (Sandbox Code Playgroud) 我想删除a的任何元素SetHash,以便返回其值:
my SetHash $a;
$a<m n k> = 1..*;
my $elem = $a.mymethod;
say $elem; # n
say $a; # SetHash(m k)
Run Code Online (Sandbox Code Playgroud)
我可以分两步完成,如下所示.有没有更好的办法?
my $elem = $a.pick;
$a{$elem}--;
Run Code Online (Sandbox Code Playgroud)
顺便说一下,是否有更多惯用的方法可以添加几个元素SetHash?
以下是否更好?
my SetHash $a;
$a{$_}++ for <m n k>;
Run Code Online (Sandbox Code Playgroud)
要么
my SetHash $a;
$a<m n k> X= True;
Run Code Online (Sandbox Code Playgroud) loop {
my $word = prompt '> ' ;
say $word;
}
Run Code Online (Sandbox Code Playgroud)
什么是正确的方法,exit如果/当而不是打印一个单词我按Ctrl + D?
我有一个包含3个元素的数组:
my @a = <x y z>;
Run Code Online (Sandbox Code Playgroud)
然后我用Array值创建一个哈希,并使其@a内容成为其值之一:
my Array %h;
%h<a> = @a;
Run Code Online (Sandbox Code Playgroud)
稍后我检索此值并将其分配给另一个数组:
my @A = %h<a>;
Run Code Online (Sandbox Code Playgroud)
但我得到的@A不是一个包含3个元素的数组,而是一个元素的数组,它本身就是一个包含3个元素的数组:
say @A; # [[x y z]]
say @A[0].elems; # 3
Run Code Online (Sandbox Code Playgroud)
所以,%h<a>被push编入@A.
我的代码中的错误在哪里?
UPD:这似乎解决了这个问题,但并没有提高我的理解力.:)
my @A = @(%h<a>);
say @A; [x y z]
Run Code Online (Sandbox Code Playgroud) 我发现这个非常有用的单行,它可以工作,但我无法理解它是如何设法在文件行中循环两次。
perl6 -ne 'state %l; .say if ++%l{$_} == 1' input-file.txt
Run Code Online (Sandbox Code Playgroud) 在这里,我regex从Regex数组元素手动创建.
my Regex @reg =
/ foo /,
/ bar /,
/ baz /,
/ pun /
;
my $r0 = @reg[0];
my $r1 = @reg[1];
my Regex $r = / 0 $r0 | 1 $r1 /;
"0foo_1barz" ~~ m:g/<$r>/;
say $/; # (?0foo? ?1bar?)
Run Code Online (Sandbox Code Playgroud)
怎么做for @reg {...}?
是否有一些简单的方法(没有sprintf,当然,还有printf)获得(001, 002, ... 100)Perl 的列表?在bash中它就像是seq -w 1 100.Perl怎么样?
我几乎可以肯定已经有了答案,但是作为 Scala 的初学者,我找不到它。
因此,我创建了一个power包含两个参数的函数:
def power(x: Double, n: Int): Double = {
@scala.annotation.tailrec
def go(acc: Double, i: Int): Double = {
if (i == 0) acc
else go(acc * x, i - 1)
}
go(1, n)
}
Run Code Online (Sandbox Code Playgroud)
如果我然后计算 power(2, 3)
println(
power(2, 3)
)
Run Code Online (Sandbox Code Playgroud)
我明白了8.0,这很好,但8如果第一个参数是,那就更好了Int。我怎样才能做到这一点?
我有一个 (gif) 图像的链接,通过“在新选项卡中打开”手动获取。我希望 Puppeteer 打开图像,然后将其保存到文件中。如果在普通浏览器中执行此操作,我会单击右键并从上下文菜单中选择“保存”。在 Puppeteer 中是否有一种简单的方法来执行此操作?
perl6 ×8
raku ×2
generics ×1
javascript ×1
leading-zero ×1
perl ×1
puppeteer ×1
scala ×1
sequence ×1
web-scraping ×1