0

我有这个代码:

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​​ 中有什么东西吗?也许这会有所帮助。

4

3 回答 3

2

如果只想在edit_line发生变化时查看数据,可以使用changemethod和textmethod:

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代替{}多行块是首选样式。

于 2009-06-12T13:28:49.150 回答
0

一位朋友向我指出了这一点:

data.each_index { |i| data[i] = edit_line() { data[i].text } }
于 2009-06-11T08:52:34.857 回答
0

由于您需要存储在那里的索引和数据,因此您需要#each_with_index. 我从来没有用过鞋子,所以我帮不了那部分,但#each_with_index工作原理是这样的:

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

这将打印:0 => cat 1 => bat 2 => rat

于 2009-06-12T00:34:12.850 回答