From: Trans Date: 2005-09-12T13:21:31+09:00 Subject: Re: Array#[]= hmmm.... # holds some nift binding methods like []= # for setting local vars, essentially # # eval %{ #{var}=#{val} }, binding # require 'nano/binding' class Array def to_p(bind) P.new(bind,*self) end end class P < Array attr_reader :bind def initialize(*args) super() @bind = args.shift if Binding === args.first self.replace(args) end def ===(args) if size == args.size each_with_index{ |k, i| args.bind[k] = args[i] } return true else return false end end end def prms(bind,*args) Params.new(bind,*args) end def x(*args) a,b = nil,nil case args.to_p(binding) when P[] then p [] when P[:a] then p [a] when P[:a,:b] then p [a,b] else puts "don't know" end end x x(1) x(1,2) x(1,2,3)