共享字典在函数内部怎么修改?不在函数中时可以用Adict[`yyy]=`yyhh这样赋值,在函数中就不可以报Syntax Error: [line #45] The variable is not initialized yet: testdict

如题,代码如下

syncDict(STRING,ANY, `testdict)
testdict.dictUpdate!(append!, `Codes, `000001, x->array(x.type(), 0, 512).append!(x))
testdict.dictUpdate!(append!, `Codes, `000002, x->array(x.type(), 0, 512).append!(x))
testdict.dictUpdate!(append!, `Codes, `000003, x->array(x.type(), 0, 512).append!(x))
testdict[`00003]=1222
ab=testdict[`Codes]
testdict[`Codes]=ab[ab!=`000001]
testdict[`Codes]
testdict.erase!(`00003)
def f(){
	syncDict(STRING,ANY, `testdict)
	testdict.dictUpdate!(append!, `Codes, `000001, x->array(x.type(), 0, 512).append!(x))
	testdict.dictUpdate!(append!, `Codes, `000002, x->array(x.type(), 0, 512).append!(x))
	testdict.dictUpdate!(append!, `Codes, `000003, x->array(x.type(), 0, 512).append!(x))
	testdict[`00003]=1222
	ab=testdict[`Codes]
	testdict[`Codes]=ab[ab!=`000001]
	testdict[`Codes]
	testdict.erase!(`00003)
	}
f()
Syntax Error: [line #45] The variable is not initialized yet: testdict


请先 登录 后评论

1 个回答

mhxiang

共享字典在函数内部不能用=赋值,可以改成如下代码

def f(){
	syncDict(STRING,ANY, `testdict)
	testdict.dictUpdate!(append!, `Codes, `000001, x->array(x.type(), 0, 512).append!(x))
	testdict.dictUpdate!(append!, `Codes, `000002, x->array(x.type(), 0, 512).append!(x))
	testdict.dictUpdate!(append!, `Codes, `000003, x->array(x.type(), 0, 512).append!(x))
	testdict.dictUpdate!(append!, `00003,1222, x->array(x.type(), 0, 512).append!(x))
	ab=testdict[`Codes]
	ab=ab[ab!=`000001]
	testdict.erase!(`00003)
	testdict.erase!(`Codes)
	testdict.dictUpdate!(append!, take(`Codes,size(ab)), ab, x->array(x.type(), 0, 512).append!(x))
	}
f()
请先 登录 后评论
  • 1 关注
  • 0 收藏,863 浏览
  • haaha 提出于 2022-05-10 18:23

相似问题