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

>>


       Создадим небольшую структуру.
    
#!/usr/bin/perl6
my @str='белый' => 'albus', 'черный' => 'niger', 'серый' => 'canus',
	'красный' => 'rubens', 'зеленый' => 'viridis', 'синий' => 'venetus';
for @str {.say}
"белый" => "albus"
"черный" => "niger"
"серый" => "canus"
"красный" => "rubens"
"зеленый" => "viridis"
"синий" => "venetus"

       А как узнать какие ключи у хэша?
    
#!/usr/bin/perl6
my @str='белый' => 'albus', 'черный' => 'niger', 'серый' => 'canus',
	'красный' => 'rubens', 'зеленый' => 'viridis', 'синий' => 'venetus';
@str.keys.say;
@str>>.keys.say; # для этого есть >>, он же »
0 1 2 3 4 5
белый черный серый красный зеленый синий

       Насчёт символа » . Я работаю в текстовой консоли в виме. Для вставки » я добавил в ~/.vimrc строку:
       imap <F8> »
       Теперь в режиме вставки по нажатию F8 вставляется »
# mutatio postrema: 3 Sep 2010


       @list.method - применяет метод ко всему массиву, а не к каждому его элементу.
       @list».method - применяет метод не ко всему массиву, а к каждому его элементу, возвращая массив полученных результатов.
    
#!/usr/bin/perl6
my @list=1..5;
@list.sin.say;
'--------'.say;
@list».sin.say;
-0.958924274663138
--------
0.841470984807897 0.909297426825682 0.141120008059867 -0.756802495307928 -0.958924274663138

       Bene. Однако так и хочется подправить скрипт, чтобы он выводил значения синусов столбиком. Нет ничего проще.
    
#!/usr/bin/perl6
my @list=1..5;
@list.sin.say;
'--------'.say;
@list».sin».say;
-0.958924274663138
--------
-0.958924274663138
0.141120008059867
0.841470984807897
-0.756802495307928
0.909297426825682

       Symbolum » fructuosum est.
       И полезное наблюдение - @list.sin.say выводит синус последнего элемента массива.
# mutatio postrema: 8 Sep 2010


       » или >> очень хорош в плане разгрузки программы от циклов. Допустим, у нас есть массив, с каждым элементом которого надо проделать какие-то сложные вещи.
    
#!/usr/bin/perl6
my @list=<abc def ghi>;
@list».&double.say;
sub double($in) { # в субрутину заключаем "сложную вещь"
	return "$in $in ";
	}
abc abc  def def  ghi ghi 

       Теперь основная часть программы избавится от множества for {}
       Наша программа продублировала слова. say успешно вывела массив. И опять нас не устраивает, что всё в одну строку. Чуть подправим...
    
#!/usr/bin/perl6
my @list=<abc def ghi>;
@list».&double».say;
sub double($in) { # в субрутину заключаем "сложную вещь"
	return "$in $in ";
	}
ghi ghi 
abc abc 
def def 

       То есть после названия субрутины тоже можно ставить волшебный »
       Не знаю почему, но надо писать именно '&double' при вызове, а не 'double' (что приводит к ошибке "метод не найден").
# mutatio postrema: 8 Sep 2010


       Если мы вызовем %hash.say, то получим так:
    
#!/usr/bin/perl6
my %hash=<виноград uva вино vinum праздник festum похмелье crapula здоровье valetudo>;
%hash.say;
("виноград" => "uva", "вино" => "vinum", "праздник" => "festum", "похмелье" => "crapula", "здоровье" => "valetudo").hash

       А если добавить к %hash символ », тогда:
    
#!/usr/bin/perl6
my %hash=<виноград uva вино vinum праздник festum похмелье crapula здоровье valetudo>;
%hash».say;
valetudo
festum
uva
crapula
vinum

       Juvat.
# mutatio postrema: 30 Jan 2012


       Допустим, нам надо получить некую подвыборку из хэша по определенным ключам.
    
#!/usr/bin/perl6
my %hash=<a А b Б c В d Г e Д f Е g Ё h Ж i З j И k Й l К>;
%hash<a b c>».say;
В
А
Б

       Здесь понятно.
# mutatio postrema: 8 Sep 2010

   < ... >, >>, массивы, хэши, элемент хэша, sub      charta situs       nota XLVIII, nota L, nota LII, nota LIII, nota LV   

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