0

配列内のキーワード (手がかり) を見つけてその位置を返すコードがいくつかあります。この結果を取得して、puts コマンドとして実行しようとしています。配列内の「ソフトウェアに含まれる」位置を常に知っているとは限らないため、この検索が必要です

以下の私のコードは単純な出力「手がかり[2]」ですが、実際に実行したいのは、入力したかのように手がかり[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、ラムダでのコマンドは次と同等です。

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 に答える