perl6 – Perl 6:反式(%h)vs反式(%h .keys =>%h.值)

前端之家收集整理的这篇文章主要介绍了perl6 – Perl 6:反式(%h)vs反式(%h .keys =>%h.值)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
另一个关于哈希作为反转论证的问题.在下面的代码中,简单地使用hash会得到不正确的结果,但是用键和值替换它会使其正确.怎么了?

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)

解决方法

我想你误解了.trans的作用.您可以指定要更改为其他字符的字符范围.您没有指定要更改为其他字符串的字符串.

所以答案A_BC DE_F是正确答案,因为a被A代替,被_代替,b代替B,c代替C等.

也许我们应该引入一个.subst的版本,它采用哈希的匹配和替换.同时,您可能必须创建一个循环,该循环遍历散列的键/值并使用它调用.subst. (https://docs.perl6.org/routine/subst)

猜你在找的Perl相关文章