これは私の辞書です:辞書からグローバル変数を割り当てる方法は?
vimvar = {'startline' : [ 'startline' , 'int(vim.eval("s:StartLine"))' ],
'startline-1' : [ 'startline' , 'int(vim.eval("s:StartLine"))-1'],
'endline' : [ 'endline' , 'int(vim.eval("s:EndLine"))' ],
'gcase' : [ 'gCASE' , 'vim.eval("g:CASE")' ],
'akeyw' : [ 'akeyw' , 'vim.eval("a:keyw")' ]
}
これは私のチェックリストです:私は何をしたいか
importlist = ['startline', 'gcase', 'akeyw']
はimportlist
の値がvimvar
辞書にキーとして存在しているかどうかを確認することです。
よりもはいている場合:
(キーに関連付けられている)サブリストにおける第一のフィールドの値は、新しいグローバル変数でなければなりません。
(キーに関連付けられた)サブリストの2番目のフィールドの値を実行する必要があります。テキストエディタvimから変数をインポートします。
私が上に実現するために、このコードを作成しました:
for n in importlist:
for key,val in vimvar.items():
if n in vimvar:
exec('global ' + vimvar[key][0])
exec(vimvar[val][0] + '=vimvar[val][1]')
しかし、それはエラーに私が間違っていた何
undefined variable 'sa'
undefined variable 'gCASE', unhashable type list
など
を与えるものは何でも私は?
エラーメッセージにエラーの行がありますか? – nbro
あなたが間違ったのは、グローバル値に 'exec'を割り当てることです。あなたはそれをするために_incredibly_良い理由がありますか? – TigerhawkT3
大きな問題点:問題は、ループに1つのループが多すぎるということです。 'N'が辞書にあるかどうかをチェックして、あなたはimportlistにnの をDEFにつながる_current_辞書の繰り返し、使用:nの場合vimvarで を: のexec(「グローバル」+ vimvar [N] [0]) exec( '='。join(vimvar [n])) –