←back to thread

317 points est | 1 comments | | HN request time: 0s | source
Show context
korijn ◴[] No.17449188[source]
It feels like we are repeating a mistake the PHP community made years ago. PHP supports assignment in expressions, and the community seems to avoid its use. There are plenty of examples of stackoverflow questions and answers where the problem is caused by coders overlooking an assignment in an expression. You just don't expect assignment to occur in an expression, and its visually similar enough to gloss over it.
replies(4): >>17449245 #>>17449289 #>>17449406 #>>17450205 #
sametmax ◴[] No.17449406[source]
In PHP, the "if ($a = 1)" and "if ($a == 1)" look a lot like each others.

In the Python version, the new "(a := 1)" will stand out compare to the canonical "a == 1" as the ':' and '()' are unexpected here, and scream that it's not regular if test.

replies(3): >>17451677 #>>17451814 #>>17453916 #
1. thomasahle ◴[] No.17453916[source]
The '()'s are not always needed though, as in the PEP examples `(y := f(x), x/y)` and `(x := 0, x := 1)`.

The alternative `f(x) as y` syntax looked nice to my eyes, and doesn't introduce new symbols. However I'm sure they are right, that it would have bad corner cases.