为什么可以';我不能访问ruby初始化返回对象中的方法吗?
我制作了一个显示对话框的类,web对话框有一些方法,比如为什么可以';我不能访问ruby初始化返回对象中的方法吗?,ruby,sketchup,Ruby,Sketchup,我制作了一个显示对话框的类,web对话框有一些方法,比如show,close。在initialize方法中,我返回web对话框对象,并调用: $loginUI=LoginUI.new $loginUI.show # it tell me no this method 为什么我不能访问WebDialog方法并获取对象作为返回值,除非我将该方法重写如下 class LoginUI @@me=nil def initialize() @@me=intiLoginDlg() @
show
,close
。在initialize
方法中,我返回web对话框对象,并调用:
$loginUI=LoginUI.new
$loginUI.show # it tell me no this method
为什么我不能访问WebDialog
方法并获取对象作为返回值,除非我将该方法重写如下
class LoginUI
@@me=nil
def initialize()
@@me=intiLoginDlg()
@@me.show()
return @@me
end
def intiLoginDlg()
@dl = UI::WebDialog.new("aaa", true, "bbb", 50, 50, 0, 0, false);
#...do something
return @dl
end
################################# I must add this method to trigger it??
def isShow()
return @@me.visible?
end
def show()
@@me.show
end
def close
@@me.close
end
end
我不确定你到底想做什么,但我认为你正在寻找的魔法很简单:
class LoginUI < UI::WebDialog
# initialize() and intiLoginDlg
end
…应按预期工作
另一个使用封装而不是子分类的更高级(可能是过度设计的!)解决方案是尝试。更进一步,从Ruby的
initialize
方法返回任何东西都没有任何用处。调用.new
时不会返回返回值-您将始终获得该类的实例。
$loginUI=LoginUI.new
$loginUI.show