0

我有一些代码可以在数组(线索)中找到关键字并返回其位置,我正在尝试获取此结果并将其作为 puts 命令执行。此搜索是必要的,因为我并不总是知道“软件包含”在数组中的位置

我下面的代码只是简单的输出“线索 [2]”,但我想实际执行 puts 线索 [2],就好像我已经输入了它一样,所以我的输出将是“包含软件”。

有没有办法让这个可行?

clues = Array.new 
clues << 'Power supply type' 
clues << 'Slots'
clues << 'Software included'

Var100 = clues.rindex('Software included')
Var101 = "clues[#{Var100}]" 

command_store = Array.new
command_store << lambda {puts "clues[#{Var101}]" }
4

1 回答 1

2

你把事情复杂化了太多。例如,您puts在 lambda 中的命令等价于:

puts "clues[clues[2]]"

通过一点调试打印,您将能够使其工作。这是我认为你想要得到的:

clues = ['Power supply type', 'Slots', 'Software included']

command_store = []
command_store << lambda { 
  idx = clues.rindex('Software included')
  puts clues[idx] 
}
command_store.each(&:call) # call every lambda in the array
# >> Software included

虽然这个确切的代码对我没有任何意义(谁获取值的索引只是为了使用该索引来打印值),但我知道这可能是一个过于简单的例子。

提示:

  • 不要以大写字母开头的变量名;
  • 尝试为变量取合理的名称。它会让你以后的生活更轻松;
  • 总是喜欢[]Array.new
于 2012-08-03T18:39:33.510 回答