在P5中,我能够做到这样的事情
my ($var1, $var2, $var3) = $string =~ /(.+)\s(.+)\s(.+)/;
我如何在Perl 6中做同样的事情?如果我使用相同的语法,$ var1将保存整个$ string值.
该匹配的结果是一个Match对象,它本身不会像列表一样,因此不会扩展为三个变量.但是,Match对象具有"list"方法,可以执行您想要的操作.这是一个例子:
my $string = "hello how are you";
my ($var1, $var2, $var3) =
($string ~~ /(.+)\s(.+)\s(.+)/).list;
say "$var1 and $var2 and $var3
# Output: hello how and are and you
Run Code Online (Sandbox Code Playgroud)
还有一些要指出的事情:
words
方法可能会执行您想要的操作.当然,你需要检查你想要什么:用空格分割?只返回字母字符,以便句点和逗号不在最终结果中?等等comb
方法实际上更有帮助?my $string = 'foo bar baz';
my $match = $string ~~ /(.+)\s(.+)\s(.+)/;
say $match; # 'foo bar baz'
say $match[0]; # 'foo'
say $match[1]; # 'bar'
say $match[2]; # 'baz'
my ($foo, $bar, $baz) = @$match;
say $foo; # 'foo'
say $bar; # 'bar'
say $baz; # 'baz'
Run Code Online (Sandbox Code Playgroud)
因此
my ($foo, $bar, $baz) = @($string ~~ /(.+)\s(.+)\s(.+)/);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
129 次 |
最近记录: |