ruby - обувь - вызов функции edit_line - PullRequest
0 голосов
/ 11 июня 2009

У меня есть этот код:

Shoes.app do

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

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

end

когда значение (foo) изменяется в поле edit_line, я вижу в терминале 1,2,3 или 4. Но мне нужно значение (.txt) из каждого поля edit_line. Как я могу сослаться на это? Проблема в том, что данные являются динамическими и могут иметь n записей.

В php есть что-то вроде $$ var. Что-то есть в ruby? может быть, это может помочь.

Ответы [ 3 ]

2 голосов
/ 12 июня 2009

Если вы просто хотите увидеть данные при изменении 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 вместо {} для многострочных блоков.

0 голосов
/ 12 июня 2009

Поскольку вам нужны и индекс, и данные, хранящиеся там, вы хотите #each_with_index. Я никогда не использовал обувь, поэтому я не могу помочь с этой частью, но #each_with_index работает так:

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

Это напечатает: 0 => кот 1 => летучая мышь 2 => крыса

0 голосов
/ 11 июня 2009

Друг указал мне на это:

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