Hylang Map Destructuring

Hylang поддерживает деструктуризацию карты, как в clojure?

Например: https://gist.github.com/john2x/e1dca953548bfdfb9844

1 ответ

Решение

Hy не имеет встроенной деструктуризации отображения, хотя итеративная деструктуризация Python работает в Hy.

Вы можете таким образом деструктурировать карты в Python, используя списки, но это ограничено, например,

>>> dict(a=1, b=2, c=3)
{'a': 1, 'b': 2, 'c': 3}
>>> a, b, c = [_[k] for k in ['a', 'b', 'c']]
>>> a
1
>>> b
2
>>> c
3

Это становится неловко, когда во что-то вкладывают диктовку, но иногда этого достаточно. Было бы довольно легко сделать макрос для этой идиомы в Hy.

Я также работал над hy.contrib.destructure модуль. Это все еще не было объединено (не действительно закончено), но часть разрушения картографии работает. Вы можете попробовать использовать это, если вам нужно работать с глубоко вложенными данными. Синтаксис похож на Clojure. Макросы имеют строки документации, а модульные тесты имеют примеры.

Другие вопросы по тегам