что я не понимаю некоторые моменты, потому что никогда не видел... (вчера что-то похожее в коде увидел, но тоже не до конца понял a = value or 0)
1.
v = a == "foo" and (v + 1)
or a == "bar" and (v - 1)
or -1
и 2.
v = switch[a] and switch[a](v) or 0
я правильно понимаю?
1. v присваивается
(v + 1)
, если а равно
"foo"
, а если a равно
"bar"
, то v присваивается
(v + 1), а если ни то v присваивается
-1
?
2. если a равно "foo", то в функцию switch.foo в качестве аргумента v ? посылается 100500
Во втором — v = switch[a] and switch[a](v) or 0 switch[a] and switch[a](v) — проверяет, что в свитче есть значение [a], и если есть — вызывает его. Если такого нет — переходит к следующему or, и выставляет 0 как дефолт.
Обсуждают сегодня