分开例如mins-2成为单位名称和顺序的组成部分,这就是我想要的
sub split-order ( $string ) { my Str $i-s = '1'; $string ~~ / ( <-[\-\d]>+ ) ( \-?\d? ) /; $i-s = "$1" if $1 ne ''; return( "$0",+"$i-s".Int ); }
似乎perl6应该能够将其打包成更加简洁的措辞.我需要默认顺序为1,其中没有尾随数字.
我可能有点懒,不与行结尾匹配$.试图避免返回Nil,因为这对调用者没用.
任何有更好转变的人?
解决方法
如何使用好的旧分裂?
use v6; sub split-order(Str:D $in) { my ($name,$qty) = $in.split(/ '-' || <?before \d>/,2); return ($name,+($qty || 1)); } say split-order('mins-2'); # (mins 2) say split-order('foo42'); # (foo 42) say split-order('bar'); # (bar 1)