为什么梳子在循环内的行为会有所不同?

时间:2019-11-21 14:05:20

标签: raku

注意:我正在使用REPL执行以下操作     这是基于MoarVM版本2019.03构建的Rakudo Star版本2019.03.1 实施Perl 6.d。

在Eul​​er项目#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在这两种情况下为何表现不同?

1 个答案:

答案 0 :(得分:10)

行为没有不同。在一种情况下,引号是一种语法元素(是代码的一部分),而在另一种情况下,则从文件中逐字读取数据:

"ZULMA".comb
'"ZULMA"'.comb

数据不同。不是行为。