Перейти к основному содержанию

Новости

Тема: [Perl 6] Perl 6 для php-программиста (Прочитано 55 раз) предыдущая тема - следующая тема

  • inter 😎
  • [*][*][*][*][*]
  • Царь
[Perl 6] Perl 6 для php-программиста
Статья в разработке.
Здесь будет таблица с примерами: слева код на php, справа код на perl 6.

Здесь можно поиграться с perl6 онлайн.

php 5 или 7perl 6
echo 100500, "\n";
say 100500;
Array
$a = [1, 'two', 35];
echo gettype($a), "\n"; // array;
echo is_array($a), "\n"; // 1
echo 'total: ', count($a), "\n"; // 4
echo 'last: ', $a[count($a)-1], "\n"; // 35
Array
my @a = 1, 'two', 35;
say @a.WHAT.^name; # Array
say @a ~~ Array; # True
say 'total: ', @a.elems; # 4
say 'last: ', @a[*-1]; # 35
foreach
foreach ($a as $key -> $val) {
    echo "$key - $val\n";
}
for
for @a.kv -> $key, $val {
    say "$key - $val";
}
Ассоциативный массив:
$man = ['name' => 'Ваня Иванов', 'age' => 20];
print_r($man);
echo $man['age'];
$man['height'] = 190;
Hash
my %man = name => 'Ваня Иванов', age => 20;
dd %man;
print %man<age>;
%man<height> = 190;
Вместо %h<key> можно использовать вот так: %h{'key'},
например, если у вас есть пробелы в ключе
Map, анонимная функция
$a = [1, 'two', 3];
$b = array_map(function($v){return is_int($v) ? $v * 3 : 1;}, $a);
# print_r($b); #  [3, 1, 9]
Map, анонимная функция
my @a = 1, 'two', 3;
my @b = @a.map({$_ ~~ Int ?? $_ * 3 !! 1});
# dd @b; # [3, 1, 9]

# Вторую строчку можно ещё так:
# my @b = @a.map(-> $v {$v ~~ Int ?? $v * 3 !! 1});
OOP. Private method:
private function clean_data() {
    # ...
}
OOP. Private method:
method !clean-data {
    # ...
}
Function args: ...
function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4); # 10
Function args: * (slurpy)
sub sum-custom(*@numbers) {
    my $acc = 0;
    for @numbers -> $n {
        $acc += $n;
    }
    return $acc;

    # Код выше можно заменить одной строкой:
    # [+] @numbers;
    # или так:
    # @numbers.reduce: * + *;
    # Функция sum уже есть в языке
}

print sum-custom 1, 2, 3, 4; # 10
  • Последнее редактирование: 09 Январь 2018, 11:54:35 by inter 😎