加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl6 – 在Perl 6中具有长于一个符号的密钥的.trans

发布时间:2020-12-16 06:24:35 所属栏目:大数据 来源:网络整理
导读:trans 是一个非常有用和强大的工具,但对我来说仍然是 a bit of a mystery. 例如.我仍然不理解文档中的这句话: In case a list of keys and values is used,substrings can be replaced as well. 如果键和值长于一个符号,算法是什么? 以下测试代码探讨了.tr
trans是一个非常有用和强大的工具,但对我来说仍然是 a bit of a mystery.

例如.我仍然不理解文档中的这句话:

In case a list of keys and values is used,substrings can be replaced
as well.

如果键和值长于一个符号,算法是什么?

以下测试代码探讨了.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个字符串映射.

how .trans works with ‘conflicting’ keys

给定一对对列表,P6首先尝试第一个,如果不匹配,则第二对,依此类推.

我需要探索lizmat现在的想法,以及当她在her earlier answer about .trans中说出以下内容时她的意思:

I think you misunderstand what .trans does. You specify a range of characters to be changed into other characters. You are NOT specifying a string to be changed to another string.

我认为你从文档中引用的句子有点含糊不清:

In case a list of keys and values is used,substrings can be replaced as well.

这意味着传递给.trans的对的(单个).key属性存储字符串列表而不是单个字符串,同样对于该对的单个.value属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读