我有这段代码:
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中有什么东西吗?也许这可能会有所帮助。
答案 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 =>鼠