为什么第一个表达式解释而不是第二个?
我理解它们是相同的,也就是说,调用匿名正则表达式的字符串。
("foo").first: /foo/ andthen say "$_ bar";
> foo bar
"foo": /foo/ andthen say "$_ bar";
> Confused
> at /home/dmc7z/raku/foo.raku:2
> ------> "foo":⏏ /foo/ andthen say "$_ bar";
> expecting any of:
> colon pair
发布于 2022-06-23 13:05:35
这是一个方法调用:
("foo").first: /foo/
就像你写的一样:
("foo").first( /foo/ )
或者只是:
"foo".first( /foo/ )
(请注意,我在上述三种描述的末尾使用了:
。这就是使用:
的想法,意思是后面的任何东西都是同一个表达式的一部分。)
在这种情况下,使用first
没有多大意义。相反,我会使用~~
。
"foo" ~~ /foo/ andthen say "$_ bar";
first
用于查找列表中与某些描述匹配的第一项。如果在单个项目上使用它,它将返回该项,或者返回Nil
。它总是返回一个值,在这种情况下,Nil
是最合理的单个未定义值。
它说它期待一个冒号对的原因是,这是:
在那个位置上唯一有效的使用。老实说,我半途而废地期望它会抱怨它是一个无效的标签。
https://stackoverflow.com/questions/72724497
复制相似问题