perl6.suОсвоим perl6 к 2015 году!

nota CX. *


       Забавное использование *
    
#!/usr/bin/perl6
my ($a,$b,$c)=1,2,3;
say "a=$a b=$b c=$c";
my ($d,$f);
($d,*,$f)=1,2,3;
say "d=$d f=$f";
a=1 b=2 c=3
d=1 f=3

       То есть для позиции, обозначаемой звездочкой, ничего не делать, игнорировать, но вместе с тем эту позицию учесть. Кстати, нельзя задекларировать таким образом: my ($d,*,$f). Это приводит к ошибке. Поэтому по отношению к $d и $f это надо было сделать раньше.
       Где это может быть удобно? Например, в случае использования конструкций вида 5..10:
    
#!/usr/bin/perl6
my ($a1,$a3,$a4,$a5,$a7);
($a1,*,$a3,$a4,$a5,*,$a7)=1..7;
"a1=$a1 a3=$a3 a4=$a4 a5=$a5 a7=$a7".say;
a1=1 a3=3 a4=4 a5=5 a7=7

       Или перенесения в скаляры некоторых элементов массива:
    
#!/usr/bin/perl6
my @list=<login 123456 perl6.su alex male>;
my ($login,$firstname);
($login,*,*,$firstname,*)=@list;
"$login $firstname".say;
login alex

       Что характерно, звездочку можно использовать и по другую сторону знака равенства.
    
#!/usr/bin/perl6
my ($a1,$a2,$a3,$a4,$a5)=1,2,*,4,5;
print "$a1 $a2 $a3 $a4 $a5\n";
1 2 Whatever<1208802535387254149> 4 5

       Whatever... Видимо, это родственник Any. Интересно, что $a3.say и "$a3".say дают разные результаты:
    
#!/usr/bin/perl6
my ($a1,$a2,$a3,$a4,$a5)=1,2,*,4,5;
print "$a1 $a2 $a3 $a4 $a5\n";
$a3.say;
"$a3".say;
1 2 Whatever<1479658210086096298> 4 5
*
Whatever<1479658210086096298>

       Возможно, у этого whatever есть какое-то еще полезное применение.
# mutatio postrema: 31 Oct 2012

   *, my, ..      charta situs       nota CIX <<     >> nota CXI   

    RSS     stdin@perl6.su    © Alexius Karmanov, 2010-2011