【问题标题】:ruby - shoes - edit_line function callruby - 鞋子 - edit_line 函数调用
【发布时间】:2009-06-11 08:24:59
【问题描述】:

我有这个代码:

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

【问题讨论】:

  • Pesto 的回答有效,那你为什么不接受这个回答,这样这个问题就可以结束了?

标签: ruby shoes


【解决方案1】:

如果您只想在编辑行更改时查看数据,可以使用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 而不是{} 是首选样式。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-24
        • 1970-01-01
        • 1970-01-01
        • 2012-04-13
        • 1970-01-01
        相关资源
        最近更新 更多