更新基于实例变量显示的值?

时间:2012-05-16 21:02:25

标签: ruby shoes

据我所知,如果我想做的就是把“放”放在控制台中,那么我就不必问这个问题了。 (但是,最后我自己在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)。

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

无论如何,请提前感谢您对我未正确行事的任何建议。也许存在误解。

2 个答案:

答案 0 :(得分:0)

你使用鞋子学习的第一件事:它是一个元编程丛林。

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

尝试移动Shoes.app块内的所有内容,我在Shoes.app之外放置了一些代码(通常是范围问题)。

答案 1 :(得分: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

ķ