From: Pedro Del Gallego Date: 2007-09-17T00:10:50+09:00 Subject: blocks expected arguments and metaprogramming hi all, in this (http://pastie.caboo.se/97662 ) code : module Kernel def expected_argument_list 2 end def before (name) puts :hola define_method(name){ if expected_argument_list==1 yield :only_one else yield :one,:two end } end end class A before :foo do |*args| puts second end before :foo do |first , second| puts second end end a = A.new a.foo Does anyone know of a way to determine what argument list was specified when the block is created? i mean i want to implement the function expected_argument_list, to return the length of the argument list that the block expected. Probably is not possible to do that :( When are defined the variables of the block, in the class definition time, or after the yield call? Thanks -- ------------------------------------- Pedro Del Gallego Email : pedro.delgallego@gmail.com