php 5 или 7 | perl 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.^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}); |
Поиск в массиве
$arr = [1, 2, 3, 4, 5]; var_dump(in_array(3, $arr)); # bool(true) | Поиск в массиве
my @arr = [1, 2, 3, 4, 5]; say 3 (elem) @arr; # True |
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: * + *; # # p.s. Функция sum уже есть в языке }
print sum-custom 1, 2, 3, 4; # 10 |
Строки. Поиск символа | Строки. Поиск символа |
$s = 'abcdefgh'; echo strpos($s, 'b'), "\n"; А теперь проверим и напишем позицию символа в строке:
$s = 'abcdefgh'; $f = strpos($s, 'b'); if ($f !== false) { echo 'Found b at ', $f, "\n"; } | my $s = 'abcdefgh'; say $s.index('b');
А теперь проверим и напишем позицию символа в строке:
my $s = 'abcdefgh'; with $s.index('b') { say 'Found b at ', $_; } Конструкция with работает как if defined(результат-вашего-кода), результат проверки вносит в свой блок в переменную $_. До и после блока with переменная $_ не изменяется.
|