为什么 comb 在循环内表现不同?
Why does comb behave differently inside the loop?
注意:我在 REPL 中使用
这是基于 MoarVM 2019.03 版构建的 Rakudo Star 2019.03.1 版
实施 Perl 6.d.
欧拉项目 #22 中有一个 names.txt 文件类似于
"JERE","HAI","ELDEN","DORSEY","DARELL","BRODERICK","ALONSO", ...
当我读入、拆分和排序时,我得到了我期望的名字列表。
for '../names.txt'.IO.slurp.split(',').sort -> $name {
say $name;
}
打印出来
...
"ZONIA"
"ZORA"
"ZORAIDA"
"ZULA"
"ZULEMA"
"ZULMA"
现在如果我添加 comb()
for '../names.txt'.IO.slurp.split(',').sort -> $name {
say $name.comb;
}
我正在
...
(" Z O N I A ")
(" Z O R A ")
(" Z O R A I D A ")
(" Z U L A ")
(" Z U L E M A ")
(" Z U L M A ")
但是,如果我只是 运行 来自 repl;
> "ZULMA".comb
我明白了
(Z U L M A) # 注意缺少引号
为什么 comb
在这两种情况下表现不同?
它的行为没有什么不同。在一种情况下,引号是语法元素 - 代码的一部分 - 在另一种情况下,数据是从文件中逐字读取的:
"ZULMA".comb
'"ZULMA"'.comb
数据不同。不是行为。
注意:我在 REPL 中使用 这是基于 MoarVM 2019.03 版构建的 Rakudo Star 2019.03.1 版 实施 Perl 6.d.
欧拉项目 #22 中有一个 names.txt 文件类似于 "JERE","HAI","ELDEN","DORSEY","DARELL","BRODERICK","ALONSO", ...
当我读入、拆分和排序时,我得到了我期望的名字列表。
for '../names.txt'.IO.slurp.split(',').sort -> $name {
say $name;
}
打印出来
...
"ZONIA"
"ZORA"
"ZORAIDA"
"ZULA"
"ZULEMA"
"ZULMA"
现在如果我添加 comb()
for '../names.txt'.IO.slurp.split(',').sort -> $name {
say $name.comb;
}
我正在
...
(" Z O N I A ")
(" Z O R A ")
(" Z O R A I D A ")
(" Z U L A ")
(" Z U L E M A ")
(" Z U L M A ")
但是,如果我只是 运行 来自 repl;
> "ZULMA".comb
我明白了
(Z U L M A) # 注意缺少引号
为什么 comb
在这两种情况下表现不同?
它的行为没有什么不同。在一种情况下,引号是语法元素 - 代码的一部分 - 在另一种情况下,数据是从文件中逐字读取的:
"ZULMA".comb
'"ZULMA"'.comb
数据不同。不是行为。