首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字典传递给viml中的函数

将字典传递给viml中的函数
EN

Stack Overflow用户
提问于 2017-01-02 22:11:46
回答 1查看 991关注 0票数 1

我正在构建一个自定义的unite.vim源代码,其中一个选项应该能够调用一个可以接受二叉码的函数

代码语言:javascript
复制
function! s:source.gather_candidates(args, context) abort "{{{
  let l:nodeInfo = a:context.file
  return [
        \{
        \ 'word': 'delete the current node',
        \ 'kind': 'command',
        \ 'source': s:source.name,
        \ 'action__command': 'call DeleteNode(' . l:nodeInfo .')',
        \ }]
endfunction "}}}

然后再试一试,回音字典

代码语言:javascript
复制
function! DeleteNode(node) abort "{{{
  let l:currentNode = a:node
  echo l:currentNode
endfunction "}}}

但是当我尝试加载我的源时,我得到

代码语言:javascript
复制
Vim(return):E731: using Dictionary as a String

如何将字典(大约24个键)传递给函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-03 07:14:57

编辑:正如romainl所指出的,您应该能够在字典中使用:echo,这与:echomessage不同。在后一种情况下,您将需要使用string()函数对字典进行压缩。

因此,我怀疑在构建action命令时也存在类似的问题。我不确定这种nodeInfo数据的类型,但我怀疑是字典。如果这确实是一个字典,那么您必须用:'call DeleteNode(' . string(nodeInfo) .')'构建action__command字典条目,或者如果您的Vim版本足够新(7.4.1558+),或者如果执行该条目的代码也支持funcrefs,您也可以使用新的Partials (:h Partial、IIRC)。它们使用起来要简单得多,但绝对不能移植到Vim 7.3或vim 7.4.9xx.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41433881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档