Trans wrote: >>Because the keys *are* symbols, and they have colons in front of them. > > > But they're *not* symbols. They're local vars. > > T. > def foo(a:, **keys) puts keys[:a] # the key "a" is a symbol end I'd agree if the named arguments worked like positional ones, ie def foo(a:) puts a end But unless I've completely misunderstood what's been suggested here, that's not the case. Cheers, Daniel