gpt4 book ai didi

Ruby + Tk 命令绑定(bind) - 范围问题?

转载 作者:数据小太阳 更新时间:2023-10-29 07:31:20 24 4
gpt4 key购买 nike

所以我有这个应用

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: undefined local variable or method `my_fancy_function' for #

我很确定我遗漏了一些与范围相关的微不足道的东西……我该如何将该命令正确地绑定(bind)到按钮?

编辑:好的,如果我将我的 my_fancy_button block 更改为参数,即

my_fancy_button = TkButton.new(frame, :text => "Press meee", :command => proc{my_fancy_function}).pack

然后就可以了。但是为什么?

最佳答案

如果你放一个

p self

进入代码的 do ... end block ,然后您可能会发现当前范围与您的 Foo 对象不同。

关于Ruby + Tk 命令绑定(bind) - 范围问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1723101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com