Pull to refresh

Comments 11

Убил бы за эту «фичу». Как то, видимо" передержал нажатую клавишу "-" и получил вместо минуса "--". в длинном выражении. Еле нашел потом ошибку.

Вы про возможность комбинировать бинарные операторы? Да, она, конечно, не самая востребованная, но с другой стороны, вреда от неё не так много. Два минуса должны были поймать тесты. Точно так же можно передержать минус и получить вместо a-b выражение a--b. Или случайно поставить запятую в присваивании вместо точки: a = 5,3 и получить кортеж. Надо, конечно, при разработке стремится сделать такие ошибки маловероятными, но от опечаток никак не застраховаться. (Мораль: тесты — наше всё.)

Да наличие-то ошибки сразу всплыло. Но я ее локализовать очень долго в длинном выражении не мог. Всякие синусы, косинусы, экспоненты и пр. А насчет востребованности — вот я только в статье единственный пример и увидел. Еще есть?

Вообще это как бы не «фича». Возможность написания ++i вытекает из грамматики языка, чтобы «убрать» эту возможность нужно усложнить грамматику. Запрет на последовательные унарные операторы я что‐то нигде не видел, хотя их и нужно писать с пробелом во многих языках из‐за существования инкремента/декремента (или из‐за того, что унарного плюса нет, а -- начинает комментарий — это я про lua).


Комбинирование унарных/бинарных операторов проходит по тому же разряду.

Попробуйте линтеры.
Не ручаюсь за линтеры в питоне, но они любят подсвечивать «странные легальные конструкции» которые больше похожи на опечатки чем умышленное использование. Мне помогали:
if (foo);
if (a=b)
Правда при первом применении все горит красным как в аду.

Да, интересный вышел DSL с морзянкой. Вроде бы идея на поверхности, но попробуй додумайся. :)

UFO just landed and posted this here
Прикольно! Весь секрет в логическом значении.
Python 3.6.4 не работает:
Заголовок спойлера
>>> +--+_+-+_++_+--_+_-_+-+-+-___++++_+-_-+++_+-+_--++--_
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    +--+_+-+_++_+--_+_-_+-+-+-___++++_+-_-+++_+-+_--++--_
NameError: name '_' is not defined

_, ___ = Morse(), MorseWithSpace()

Без дополнительных объектов не обойтись.
Sign up to leave a comment.

Articles