Comments 25
А почему всё не как у людей? Есть же во многих языках оператор '...', зачем выдумывать '|>'?
+6
Тогда наверное не получилось бы сделать это просто, потому как точка — конкатенация строк
+1
Я такой сложности парсеры не писал, но в других языках как-то справляются. Да и глядя, сколько усилий прилагает php к угадыванию типа переменной, не думаю что представляет какую-то проблему отличить три точки от одной.
+2
Имею в виду, что стало бы сложнее в рамках этой статьи, ведь здесь цель не добавить этот оператор, а рассмотреть процесс как все происходит внутри
+2
Хм… прошу прощения, я подумал речь идёт о реальном добавлении. Для учебных целей — конечно, согласен.
Хотя синтаксис namespace-ов в php явно делался из соображений «как бы попроще парсить».
Хотя синтаксис namespace-ов в php явно делался из соображений «как бы попроще парсить».
+2
Когда делались неймспейсы, еще не было AST, и отличить контекст можно было только жуткими хаками, да и то не всегда получалось сделать предсказуемо, вон, с неймспейсами не получилось (а пытались тогда и: и ::).
Если бы неймспейсы добавлялись сегодня, этой жести с бэкслешом бы, думаю, и не вышло. Хотя уже все привыкли.
Если бы неймспейсы добавлялись сегодня, этой жести с бэкслешом бы, думаю, и не вышло. Хотя уже все привыкли.
+2
В php три точки уже используются.
+3
в php7 сделали же контекстно зависимый лексер, так что чисто теоритически никаких проблем с тем что бы заюзать три точки для рэйджей нет. Или есть?
+2
Ну тут ошибиться сложно будет:
function some(...$args) {}
// и
some(...$args);
// против (включая)
[1...42]
// и (исключая)
[1..42]
+1
some([1...42], ...$args);
Оно то понятно, но все равно приходится ненадолго задумываться на подобными местами. Оно почти не заметно, но из таких мелочей складывается комфортность работы.
Понятно, что нормальный разработчик так писать не будет, но если так можно написать, кто-нибудь обязательно напишет.
Но это так, личные вкусы.
0
Думаю всё дело в привычке, пока что никто (в том числе и я) особо не ругался о существовании подобных конструкций в других языках.
С другой стороны семантика у операторов всё же похожа — и то, и другое означает некоторую группу, только в первом случае это будет итератор от N до M, а во втором разложение этого итератора на аргументы, т.е. некоторую «запаковку» и «распаковку».
В реальности можно ещё хуже. :D
С другой стороны семантика у операторов всё же похожа — и то, и другое означает некоторую группу, только в первом случае это будет итератор от N до M, а во втором разложение этого итератора на аргументы, т.е. некоторую «запаковку» и «распаковку».
Понятно, что нормальный разработчик так писать не будет
В реальности можно ещё хуже. :D
$args = [6...8];
some(...[1...5], ...$args); // some(1, 2, 3, 4, 5, 6, 7, 8);
0
давайте так:
updated: блин, надо дочитывать комментарии
some(...[1..42]);
updated: блин, надо дочитывать комментарии
0
В mail.ru теперь пишут на PHP, причём собственной сборки с оператором диапазона? Мне уже страшно…
-9
В жизни не написал ни единой строчки на PHP, но читать было интересно, спасибо.
+2
Если не думать о том, что это перевод и всё сделано фор-фан, а считать, что это реальное будущее техническое требование, то можно было бы заиспользовать вот это решение: github.com/marcioAlmada/yay
+2
Жители Виларибо уже написали свой веб-сервис, а жители Вилабаджо все еще допиливают PHP
-17
Надо же, какие пхпшники обидчивые)) По больному ударил видать… надо было пометить, что это добрая шутка, и сам я тоже иногда пишу на пхп.
-1
Теперь надо отвечать на stackoverflow примерами со своим оператором.
+5
Есть еще масса вариантов помимо…
+1
Картинка просто шикарна. Именно так моя бурная фантазия визуализировала PHP в который добавлены «кастомные операторы» =)
+1
Статья супер!
Жду продолжение, где этот оператор будет возвращать генератор, а не генерировать массив! А то ведь
Жду продолжение, где этот оператор будет возвращать генератор, а не генерировать массив! А то ведь
-PHP_INT_MAX |> PHP_INT_MAX
… =)0
Sign up to leave a comment.
Добавление оператора диапазона в PHP