
интерполяция
Вот, допустим, у нас есть переменная $abc. Её можно интерполировать в строку как обычно:
| | #!/usr/bin/perl6
my $abc='bestiae';
my $sententia="Etiam $abc memoriam habent";
$sententia.say; | | Etiam bestiae memoriam habent |
Если же мы имеем массив, то один элемент можем вставить.| | #!/usr/bin/perl6
my @abc;
@abc[0]='bestiae'; # до 2011.07 можно сразу было написать: my @abc[0]='bestiae'
"Etiam @abc[0] memoriam habent".say; | | Etiam bestiae memoriam habent |
А полностью массив надо вставлять по-другому (не как в perl 5).| | #!/usr/bin/perl6
my @abc=<memoria tenemus>;
"Tantum scimus, quantum @abc".say;
"Tantum scimus, quantum {@abc}".say;
"Tantum scimus, quantum @abc[]".say; | | Tantum scimus, quantum @abc
Tantum scimus, quantum memoria tenemus
Tantum scimus, quantum memoria tenemus |
То же с хэшами.| | #!/usr/bin/perl6
my %abc=<unus aliquando duo pro>;
"Venenum %abc{'unus'} %abc{'duo'} remedio est.".say;
"Venenum %abc remedio est.".say;
"Venenum %abc{} remedio est.".say;
"Venenum {%abc} remedio est.".say; | | Venenum aliquando pro remedio est.
Venenum %abc remedio est.
Venenum aliquando pro remedio est.
Venenum unus aliquando duo pro remedio est. |
Интересно, а можно ли расчитывать, что во время интерполяции " %abc{} " порядок записей в хэше сохранится?| | #!/usr/bin/perl6
my %abc=<1 unus 2 duo 3 tres 4 quattuor 5 quinque 6 sex 7 septem 8 octem 9 novem 10 decim>;
"%abc{}".say;
%abc=<01 unus 02 duo 03 tres 04 quattuor 05 quinque 06 sex 07 septem 08 octem 09 novem 10 decim>;
"%abc{}".say;
%abc=<aaaa unus aaab duo aaba tres aabb quattuor abaa quinque abab sex abba septem abbb octem baaa novem baab decim>;
"%abc{}".say; | | unus duo tres quattuor quinque sex septem octem novem decim
unus duo tres quattuor quinque sex septem octem novem decim
unus duo tres quattuor quinque sex septem octem novem decim |
Короче говоря, надеяться на то, что хэш добровольно отдаст ключи-значения в каком-то порядке, non licet. # mutatio postrema: 20 Aug 2011
Probamus...
| | #!/usr/bin/perl6
"Unus plus duo { 1 + 2 } est.".say; | | Unus plus duo 3 est. |
Видимо, в этих фигурных скобках можно многое написать...| | #!/usr/bin/perl6
"Unus plus duo {
1+2;
if 3 {'tres'}
} est.".say; | | Unus plus duo tres est. |
Pulchum. Теперь многие программы можно сильно сократить. Вместо того, чтобы присваивать вывод какой-то функции переменной, а потом интерполировать переменную, теперь можно сразу вставлять эту функцию. Интересно, а когда мы пишем строчку '1+2;', то в какую переменную записывается '3'? Не в $_ - я проверял. Раньше для просмотра всех переменных можно было просмотреть хэш %main:: А сейчас? # mutatio postrema: 1 Sep 2010
|