Привязка команды Ruby + Tk - проблема с областью действия?
Итак, у меня есть это приложение
require 'tk'
class Foo
def my_fancy_function
puts "hello, world!"
end
def initialize
@root = TkRoot.new{title "Hello, world!"}
frame = TkFrame.new
my_fancy_button = TkButton.new(frame) do
text "Press meee"
command {my_fancy_function}
pack
end
frame.pack
Tk.mainloop
end
end
bar = Foo.new
Но если я нажимаю кнопку, я получаю «NameError: неопределенная локальная переменная или метод my_fancy_function» для # <TkButton: ... »
Я почти уверен, что мне не хватает чего-то тривиального, связанного с областью видимости ... как правильно привязать эту команду к кнопке?
Редактировать: Хорошо, если я поменяюmy_fancy_button
блок для параметров, т.е.
my_fancy_button = TkButton.new(frame, :text => "Press meee", :command => proc{my_fancy_function}).pack
Тогда это работает. Но почему?