Помимо 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__
напрямую не рекомендуется для других вышеупомянутых форм, ноиногда это может быть полезно в функциях высшего порядка.