如何在Hy中一次性为两个变量赋值?
在Hy中实现元组解包赋值
你可以通过序列解包的方式,在Hy里一次性给多个变量赋值,写法如下:
(defn function [] #("Hello" "World")) ; 直接解包赋值给两个变量 (setv [a b] (function)) (print a) ; 输出 "Hello" (print b) ; 输出 "World"
原理说明
Hy完全支持类似Python的序列解包逻辑,只需要把要接收值的变量放在方括号[]里,跟在setv后面,右侧是返回序列(比如元组、列表)的表达式即可。你定义的function返回的#("Hello" "World")本质就是Python的元组,所以可以直接被解包。
对比你熟悉的Python写法:
a, b = function()
Hy的(setv [a b] (function))和它是完全等价的,只是遵循Lisp的括号语法规则。
内容的提问来源于stack exchange,提问作者pooooky
相关产品推荐
相关产品推荐

