为什么第一个表达式可以解释而第二个表达式不能解释?
\n我理解它们是相同的,即调用匿名正则表达式的字符串。
("foo").first: /foo/ andthen say "$_ bar";\n> foo bar\n
Run Code Online (Sandbox Code Playgroud)\n"foo": /foo/ andthen say "$_ bar";\n> Confused\n> at /home/dmc7z/raku/foo.raku:2\n> ------> "foo":\xe2\x8f\x8f /foo/ andthen say "$_ bar";\n> expecting any of:\n> colon pair\n
Run Code Online (Sandbox Code Playgroud)\n
这是一个方法调用:
("foo").first: /foo/
Run Code Online (Sandbox Code Playgroud)
这就像你写的一样:
("foo").first( /foo/ )
Run Code Online (Sandbox Code Playgroud)
要不就:
"foo".first( /foo/ )
Run Code Online (Sandbox Code Playgroud)
(请注意,我:
在上述三个英语描述的末尾使用了它。这就是用来表示:
后面的任何内容都是同一表达式的一部分的想法的来源。)
在这种情况下,使用first
. 相反,我会使用~~
.
"foo" ~~ /foo/ andthen say "$_ bar";
Run Code Online (Sandbox Code Playgroud)
first
用于查找列表中与某些描述匹配的第一项。如果您在单个项目上使用它,它将返回该项目,或者返回Nil
。它始终返回一个值,并且Nil
在这种情况下是最明智的单个未定义值。
它说需要冒号对的原因是,这是:
在该位置唯一有效的用法。老实说,我一半期望它会抱怨这是一个无效标签。