有没有办法用 Hy 中的索引替换列表或字典元素的值?该nth
函数似乎与 Python 的方括号不对应。
我期待像下面的翻译。
(setv lst [1 2 3])
(setv (nth lst 1) 20)
lst=[1, 2, 3]
lst[1]=20
有没有办法用 Hy 中的索引替换列表或字典元素的值?该nth
函数似乎与 Python 的方括号不对应。
我期待像下面的翻译。
(setv lst [1 2 3])
(setv (nth lst 1) 20)
lst=[1, 2, 3]
lst[1]=20
此外assoc
,Hy 还可以用setv
在get
特殊的表格上,或者用在具有设置索引或键.
的语法的表格上。[]
$ hy --spy # Shows Python translation.
[...]
=> (setv lst [1 2 3])
lst = [1, 2, 3]
None
=> (setv (. lst[1]) 20)
lst[1] = 20
None
=> lst
lst
[1, 20, 3]
=> (setv (get lst 2) 30)
lst[2] = 30
None
=> lst
lst
[1, 20, 30]
当然,这些运算符最终由__setitem__
方法支持,您可以像调用任何其他方法一样调用该方法。
=> (.__setitem__ lst 0 10)
lst.__setitem__(0, 10)
=> lst
lst
[10, 20, 30]
相对于上述其他形式,不建议直接使用__setitem__
,但有时它在高阶函数中很有用。