Hylang 映射解构
Hylang Map Destructuring
hylang 是否像 clojure 中那样支持映射解构?
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
module。它仍然没有被合并(还没有真正完成),但是映射解构部分起作用了。如果您需要处理深度嵌套的数据,您可以尝试使用它。语法类似于 Clojure。宏有文档字符串,单元测试有示例。
更新
peaceamongworlds polished up my old destructuring branch. 2021年1月31日合并到master.
查看新模块的文档 here。
从版本 3.10 开始,Python 也将能够在其 match
/case
语句中解构映射。
hylang 是否像 clojure 中那样支持映射解构?
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
module。它仍然没有被合并(还没有真正完成),但是映射解构部分起作用了。如果您需要处理深度嵌套的数据,您可以尝试使用它。语法类似于 Clojure。宏有文档字符串,单元测试有示例。
更新
peaceamongworlds polished up my old destructuring branch. 2021年1月31日合并到master.
查看新模块的文档 here。
从版本 3.10 开始,Python 也将能够在其 match
/case
语句中解构映射。