为什么梳子在循环内表现不同?

jmc*_*ney 5 raku

注意:我正在使用这是Rakudo Star版本2019.03.1在REPL上进行所有操作,这是在实现Perl 6.d的MoarVM版本2019.03上构建的Rakudo Star版本2019.03.1。

在euler项目#22中,有一个names.txt文件,类似于“ JERE”,“ HAI”,“ ELDEN”,“ DORSEY”,“ DARELL”,“ BRODERICK”,“ ALONSO”,...

当我读到它时,将其拆分和排序,即可得到我所期望的名称列表。

for '../names.txt'.IO.slurp.split(',').sort -> $name {
    say $name;
}
Run Code Online (Sandbox Code Playgroud)

打印出来

...
"ZONIA"
"ZORA"
"ZORAIDA"
"ZULA"
"ZULEMA"
"ZULMA"
Run Code Online (Sandbox Code Playgroud)

现在,如果我添加 comb()

for '../names.txt'.IO.slurp.split(',').sort -> $name {
    say $name.comb;
}
Run Code Online (Sandbox Code Playgroud)

我越来越

...
(" 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 ")
Run Code Online (Sandbox Code Playgroud)

但是,如果我只是从repl运行的话;

> "ZULMA".comb
Run Code Online (Sandbox Code Playgroud)

我懂了

(ZULMA)#注意缺少引号

为什么comb在这两种情况下行为不同?

Hol*_*lli 9

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

"ZULMA".comb
'"ZULMA"'.comb
Run Code Online (Sandbox Code Playgroud)

数据不同。不是行为。