Sunday, February 28, 2010

dictionary functions: Is there a "magic" missing-attribute method/function?

Hi,

I vaguely remember that such a thing exists but it could well be that
I'm confusing vimscript with some other language.

It there such a thing as a missing method/attribute function for
dictionaries? So that I could write code like this:

let x = {}
function! x.__Missing__(name) dict
if a:name <= 1
let self[a:name] = a:name
else
let self[a:name] = self[a:name - 2] + self[a:name - 1]
endif
endfunction
echo map(range(0, 10), 'x[v:val]')

The equivalent ruby code would be:

x = Hash.new do |h, k|
case k
when 0, 1
h[k] = k
else
h[k] = h[k-2] + h[k-1]
end
end
0.upto(10).map {|n| x[n]}
# => [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

Does such a fallback function exist? If not, is there a chance for it
to be included in vimscript?

Regards,
Tom

--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

No comments:

Post a Comment