trans
是一个非常有用和强大的工具,但对我来说仍然是a bit of a mystery。
E.g。我仍然不明白文档中的这句话:
如果使用键和值列表,则可以替换子字符串 同样。
如果键和值长于一个符号,算法是什么?
以下测试代码探讨<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" />
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<p>Date: <input type="text" class="date"></p>
如何使用'冲突'键。为什么第一对的工作方式会有所不同,具体取决于它是单独使用还是伴随第二对?
.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',
bc => '34',
;
my $str = 'ab';
say "both trans: $str.trans(%trans)"; # 12
中,对可以按任意顺序排列,但在第一个示例中hash
,它是 1st 对,这是不完全的如果第二对存在则使用)
答案 0 :(得分:4)
(我不是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个字符串映射。
.trans
如何使用'冲突'键
给定列对,P6首先尝试第一个,如果不匹配,则第二对,依此类推。
我需要探讨lizmat现在的想法以及当她在her earlier answer about .trans
中说出以下内容时她的意思:
我认为你误解了
.trans
的作用。您可以指定要更改为其他字符的字符范围。您没有指定要更改为其他字符串的字符串。
我认为你从文档中引用的句子有点含糊不清:
如果使用键和值列表,也可以替换子串。
这意味着传递给.key
的对的(单个).trans
属性存储字符串的列表而不是单个字符串,同样对于该对的单.value
属性。