perl6 – 在Perl 6中具有长于一个符号的密钥的.trans
trans 是一个非常有用和强大的工具,但对我来说仍然是
a bit of a mystery.
例如.我仍然不理解文档中的这句话:
如果键和值长于一个符号,算法是什么? 以下测试代码探讨了.trans如何使用“冲突”键.为什么第一对的工作方式会有所不同,具体取决于它是单独的还是伴随第二对? my Pair @trans = ab => '12',bc => '34',; my $str = 'ab'; say "both trans: $str.trans(@trans)"; # 13 say "1st trans: $str.trans(@trans[0])"; # 12 使用哈希而不是对列表会产生不同的结果: my %trans = ab => '12',; my $str = 'ab'; say "both trans: $str.trans(%trans)"; # 12 (我知道在散列中,对可以按任何顺序进行,但在第一个带有列表的例子中,它是第一对,如果第二对存在则不完全使用) 解决方法
(我不是100%肯定以下但我必须跑.)
.trans需要一个或多个对参数,它们一起描述所需的翻译. 单个对的翻译,其键是单个字符串 P6将对的键字符串的第N个字符映射到该对的值字符串的第N个字符. 因此.trans:“ab”=> “12”将“a”映射到“1”并将“b”映射到“2”. 单个对的翻译,其键是字符串列表 P6将该对键列表的第N个字符串映射到该对值列表的第N个字符串. 因此.trans:(“ab”,“bc”)=> (“12”,“13”)将“ab”映射到“12”并将“bc”映射到“13”. 翻译对的列表 根据密钥是否包含一个字符串或它们的列表,单个对的翻译以上述两种形式中的一种或另一种进行. 对列表的转换只是重复每对的过程,根据该对的键执行第N个字符或第N个字符串映射.
给定一对对列表,P6首先尝试第一个,如果不匹配,则第二对,依此类推. 我需要探索lizmat现在的想法,以及当她在her earlier answer about
我认为你从文档中引用的句子有点含糊不清:
这意味着传递给.trans的对的(单个).key属性存储字符串列表而不是单个字符串,同样对于该对的单个.value属性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |