0

据我所知,如果我只想在控制台中“放置”,那么我就不必问这个问题了。(然而,最后我还是亲自在 StackOverflow 上向大家提问,尽管我已经访问了多年。)

这是我的问题:

  • 我正在尝试创建一个变量,该变量将在用户单击时“设置”为特定值
  • 然后我试图在更改后显示该值
  • 我可以设置值,但它不会显示

(当然,如果我不使用鞋子,这应该可以工作。)

这是我的代码的相关部分:

class Inits
# Declares all global vars used
  def init1
    ...
  end
  def initattrib
    @id = "###"
    @name = "name undef"
    alert("Alert: default attrib set")
  end

  def id
    @id
    #alert("Alert: id call")
  end

  def name
    @name
    #alert("Alert: name call")
  end

  def id=(newid)
    @id = newid
    #alert("Alert: id set")
  end

  def name=(newname)
    @name = newname
    #alert("Alert: name set")
  end
end

然后我试图调用 id 并将其设置为:

Shoes.app :width => 800, :height => 600, :resizable => false do
  currclass = Inits.new

  currclass.init1
  currclass.initattrib

  .
  .
  .

  id = "123"
  name = "new name"

  # I declare something to click here
  click { currclass.id = id, currclass.name = name }

  # Then I try to display it as so:
  para currclass.id
  para currclass.name

  # But of course the value is not displayed -- just the default value
end

...顺便说一句,我很确定我应该使用实例变量而不是类变量(@x,而不是@@x)。

有什么方法可以“更新变化”(“时钟上升沿”是一个很好的类比)或其他方式来调用它?

无论如何,提前感谢您对我做得不对的任何建议。或许有误会。

4

2 回答 2

0

如果我正确理解你想要做什么,你应该这样做:

class Cos
attr_accessor :co
def initialize(cos)
@co=cos
end
end
Shoes.app :width => 800, :height => 600, :resizable => false do
 @cosik = Cos.new("ddd")
 @ap=para(@cosik.co)

 button "click" do
  @cosik.co = "oj"
  @ap.text=@cosik.co
 end

end

ķ

于 2012-05-17T22:45:29.557 回答
0

您使用 Shoes 学到的第一件事:这是一个元编程丛林。

Shoes 有默认程序的钩子,我相信它也有一个用于创建类的钩子,因此鞋子可以将自己的魔法添加到指定的那个类中。这意味着在 Shoes.app之外定义的类现在可能与Shoes.app 中定义的一样。

尝试将所有内容移到 Shoes.app 块中,我在 Shoes.app 之外放置的代码段遇到了很多问题(通常是范围问题)。

于 2012-05-17T21:06:25.850 回答