如何在Fennel中修改序列表的值?
在Fennel中直接修改嵌套表元素的正确方式
Fennel完全支持直接修改嵌套表的元素,你之前用拆表再重新插入的操作完全没必要,而你尝试的(set (. (. tbl 2) 3) :e)语法本身是合法的,可能是测试时的其他细节问题导致未生效。更简洁高效的写法有两种:
方法1:使用嵌套.操作符
(local tbl [1 [:a :b :c] 3]) (set (. tbl 2 3) :e)
这里(. tbl 2 3)等价于Lua的tbl[2][3],用set直接赋值就能修改内层表的第三个元素。
方法2:使用表调用语法
Fennel支持将表当作函数调用,传入索引参数访问元素,嵌套场景同样适用:
(local tbl [1 [:a :b :c] 3]) (set (tbl 2 3) :e)
这种写法和Lua的tbl[2][3] = :e风格更接近,效果和第一种方法完全一致。
执行任意一种写法后,tbl的值都会变为[1 [:a :b :e] 3],无需复杂的拆表操作。
内容的提问来源于stack exchange,提问作者Slava.In
相关产品推荐
相关产品推荐

