Комментарии 12
О, первый раз услышал как Никита Попов по русски говорит)
0
Из всех вариантов коротких лямбд выбрали самый кривой…
Ну, раз так — то было бы неплохо использовать новое ключевое слово для объявления любых функций, а не только коротких лямбд.
Ну, раз так — то было бы неплохо использовать новое ключевое слово для объявления любых функций, а не только коротких лямбд.
fn helloWorder() => echo 'Hello world';
0
Это вообще разные вещи, зачем их рядом ставить?
0
В документе есть целая секция с обоснованием выбора синтаксиса wiki.php.net/rfc/arrow_functions_v2#syntax
а также секция про возможные улучшения в будущем wiki.php.net/rfc/arrow_functions_v2#allow_arrow_notation_for_real_functions
а также секция про возможные улучшения в будущем wiki.php.net/rfc/arrow_functions_v2#allow_arrow_notation_for_real_functions
0
Вообще, можно было сделать просто fn алиасом на function, получилось бы более консистентно, имхо:
А отличия были бы только в "=>" vs "{}", в первом случае только одно выражение + захват контекста, а во втором много выражений + контекст через use.
class X
{
public fn a() { ... }
public function b() { ... }
public fn c() => ...;
public function d() => ...;
}
$a = function ($x) use ($z) { ... };
$b = fn($x) use ($z) { ... };
$c = function ($x) => ...;
$d = fn($x) => ...;
А отличия были бы только в "=>" vs "{}", в первом случае только одно выражение + захват контекста, а во втором много выражений + контекст через use.
0
А заодно и use отменить, раз захват контекста без него уже реализовали.
0
Захват контекста реализован не так, как use. В use можно использовать ссылку и менять исходную переменную. В fn => — по значению.
Хотя в rfc описан вариант (я так понимаю, на будущие релизы):
$fn = fn() use(&) {
// ...
};
0
Компилятор PHP, также известный как кроличья нора FFI — Интересный пост о типах компиляторов, принципах их устройства, и собственно о реализации ahead-of-time (AOT) компилятора PHP с использованием LLVM и самого PHP.
Это самое безумное и охренительное, что я когда-либо видел! А FFI биндинги под llvm с примерами использования вообще бесподобны.
+1
$multipleLines = fn($x) => last(
Зачем объявлять функцию last() и временную переменную для решения проблемы со ссылкой в end()?
Смысл однострочника — в отсутствии деклараций:
$x = 1;
echo array_slice([
$y = $x * 10,
$z = $y + 15,
$x + $y + $z
],-1)[0];
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
PHP-Дайджест № 155 (22 апреля – 6 мая 2019)