From: Hidetoshi NAGAI Date: 2010-02-15T15:15:12+09:00 Subject: Re: 'def', but with a closure From: Albert Schlef Subject: 'def', but with a closure Date: Mon, 15 Feb 2010 14:10:36 +0900 Message-ID: > It occurred to me several times that I wanted to do: > > @cars.each do |owner, model| > widget = TkLabel.new(:text => model) > def widget.get_owner > return owner > end > end > > But, of course, this doesn't work because the code inside 'def' doesn't > see the enveloping variables, so the 'owner' within the 'def' isn't > recognized. e.g. ------------------------------------------------------ labels = @cars.collect{|owner, model| TkLabel.new(:text=>model){ # in this block, self is the created widget. @owner = owner def get_owner @owner end } } labels.each{|w| p [w.text, w.get_owner]} ------------------------------------------------------ -- Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)