0

我做了一个类来在sketchup中显示一个对话框,web对话框有方法,如showclose。在该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
4

1 回答 1

1

我不确定你到底想要做什么,但我认为你正在寻找的魔法就是这样:

class LoginUI < UI::WebDialog
  # initialize() and intiLoginDlg
end

如果你这样做,那么:

$loginUI=LoginUI.new
$loginUI.show

...应该按预期工作。

另一个使用封装而不是子类的更高级(并且可能是过度设计!)的解决方案是尝试使用method_missing.

于 2013-11-12T04:15:14.937 回答