perl6 – Perl 6:反式(%h)vs反式(%h .keys =>%h.值)
发布时间:2020-12-16 06:21:24 所属栏目:大数据 来源:网络整理
导读:另一个关于哈希作为反转论证的问题.在下面的代码中,简单地使用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 =
另一个关于哈希作为反转论证的问题.在下面的代码中,简单地使用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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |