向Ruby类传递值
我正在用visualruby制作一个小应用程序,代码如下所示:向Ruby类传递值,ruby,class,inheritance,user-interface,rubygems,Ruby,Class,Inheritance,User Interface,Rubygems,我正在用visualruby制作一个小应用程序,代码如下所示: class Base def initialize(x) @var = x @test = 0 end def button1__clicked(*argv) Derived.new(@var).show end end class Derived < Base def initialize(x) super(x)
class Base
def initialize(x)
@var = x
@test = 0
end
def button1__clicked(*argv)
Derived.new(@var).show
end
end
class Derived < Base
def initialize(x)
super(x)
end
def show()
load_glade(__FILE__)
set_glade_all()
show_window()
end
def button1__clicked(*argv)
#do something to test
destory_window()
end
end
class Base
attr_accessible :test
def initialize(x)
@var = x
@test = 0
end
def button1__clicked(*argv)
Derived.new(@var, self).show
end
end
类基
def初始化(x)
@var=x
@测试=0
结束
def按钮1已单击(*argv)
派生.new(@var.show)
结束
结束
类派生<基
def初始化(x)
超级(x)
结束
def show()
加载沼泽地(文件)
集合所有人
显示窗口()
结束
def按钮1已单击(*argv)
#做些测试
破坏窗口()
结束
结束
这里的想法是Base
是一个窗口。当我单击Base
窗口内的按钮时,会显示一个新的派生的
窗口。我想做的是在Derived
的按钮1中更改@test,单击函数,然后在Derived
窗口被销毁后将该值返回到Base
不知道这是一个更加可视化的ruby相关问题还是一个基本的ruby编程概念问题 您不是向类传递值,而是向类的实例传递值,该实例只是一个对象
您需要做的是在一个和另一个之间建立一个链接,以便可以将消息从派生消息发送回基消息
也许是这样的:
class Base
def initialize(x)
@var = x
@test = 0
end
def button1__clicked(*argv)
Derived.new(@var).show
end
end
class Derived < Base
def initialize(x)
super(x)
end
def show()
load_glade(__FILE__)
set_glade_all()
show_window()
end
def button1__clicked(*argv)
#do something to test
destory_window()
end
end
class Base
attr_accessible :test
def initialize(x)
@var = x
@test = 0
end
def button1__clicked(*argv)
Derived.new(@var, self).show
end
end
这将传入对所讨论的Base
实例的引用,并使test
属性可由其他人编辑
然后,可以使用此选项:
class Derived < Base
def initialize(x, base)
@base = base
super(x)
end
def button1__clicked(*argv)
@base.test = 1 # or whatever new value is required
destory_window()
end
end
类派生
在@base
中捕获对它的引用,然后进行练习。由于某种原因,我在initialize>中遇到了这个错误:参数数目错误(2代表0)。它无法识别派生的初始化函数。不知道为什么。你确定正在加载该类吗?它是用两个参数定义的,都是必需的,所以看到零意味着它可能是其他地方的一个不同实现。