ruby - shoes - edit_line函数调用

时间:2009-06-11 08:24:59

标签: ruby shoes

我有这段代码:

Shoes.app do

  data = [1,2,3,4] # could be also more

  data.each { |i|
    edit_line ("foo"){ puts i}
  }

end

当edit_line字段中的值(foo)发生变化时,我会在终端1,2,3或4中看到。但我需要每个edit_line字段中的值(.txt)。我该如何参考呢? 问题是数据是动态的,可以有n个条目。

在php中有类似$$ var的东西在ruby中有什么东西吗?也许这可能会有所帮助。

3 个答案:

答案 0 :(得分:2)

如果您只想在edit_line更改时查看数据,可以使用change方法和text方法:

Shoes.app do

  data = [1,2,3,4] # could be also more

  data.each do |i|
    edit_line('foo').change do |e| { puts "#Edit Line #{i} Changed: #{e.text}" }
  end
end

由于edit_line方法的默认阻止做同样的事情,你可以将其简化为:

Shoes.app do

  data = [1,2,3,4] # could be also more

  data.each do |i|
    edit_line 'foo' do |e| { puts "#Edit Line #{i} Changed: #{e.text}" }
  end
end

另请注意,使用do / end而不是{}来表示多行块是首选样式。

答案 1 :(得分:0)

一位朋友向我指出:

data.each_index { |i| data[i] = edit_line() { data[i].text } }

答案 2 :(得分:0)

由于您需要存储索引和数据,因此需要#each_with_index。我从来没有使用过鞋子,所以我对这个部分无能为力,但是#each_with_index的作用是这样的:

data = ["cat", "bat", "rat"]
data.each_with_index {|i, d| print "#{i} => #{d} "}

这将打印: 0 =>猫 1 =>蝙蝠 2 =>鼠