1

CSVデータを取得して、配列として保存しています。これらの配列を単一のハッシュとして返す必要があります。

これにより、インデックス番号を使用する代わりに、インデックスごとにキーを使用できるようになりますが、機能させるのに問題があります。引数の数が間違っているというエラーをログに記録します。

私が間違っているアイデアはありますか?

コード:

ref       = Array.new
summary   = Array.new
pri       = Array.new
state     = Array.new
estdur    = Array.new
notes     = Array.new
supporter = Array.new
bz        = Array.new
project   = Array.new
team      = Array.new

hashed = Hash.new

csvPath = "#{File.dirname(__FILE__)}"+"/../modules/csv.csv"
CSV.foreach(csvPath, :headers=>true, :header_converters=>:symbol) do |row|
  ref       << row [ :feature   ]
  summary   << row [ :Summary   ]
  pri       << row [ :Pri       ]
  state     << row [ :State     ]
  estdur    << row [ :EstDur    ]
  notes     << row [ :Notes     ]
  supporter << row [ :Supporter ]
  bz        << row [ :BZ        ]
  project   << row [ :Project   ]
  team      << row [ :Team      ]
end
return hashed[
  "ref",       ref,
  "summary",   summary,
  "pri",       pri,
  "state",     state,
  "estDur",    estdur,
  "notes",     notes,
  "supporter", supporter,
  "bz",        bz,
  "project",   project,
  "team",      team
]
4

2 に答える 2

7

あなたがこれについて行っている方法はかなり混乱しています。このような変数が多数ある場合は、別の保存方法を使用する必要があります。これらを返す前にハッシュに折りたたむことは、そもそもそれらをどのように保存するかについてのヒントです。

これは、Rubyフレーバーがはるかに多いリワークです。

# Create a Hash where the default is an empty Array
result = Hash.new { |h, k| h[k] = [ ] }

# Create a mapping table that defaults to the downcase version of the key
mapping = Hash.new { |h, k| h[k] = k.to_s.downcase.to_sym }

# Over-ride certain keys that don't follow the default mapping
mapping[:feature] = :ref

csvPath = File.expand_path("/../modules/csv.csv", File.dirname(__FILE__))

CSV.foreach(csvPath, :headers => true, :header_converters => :symbol) do |row|
  row.each do |column, value|
    # Append values to the array under the re-mapped key
    result[mapping[column]] << value
  end
end

# Return the resulting hash
result
于 2012-10-11T15:04:58.500 に答える
4

これを使って:

return Hash["ref", ref, "summary", summary, "pri", pri, "state", state, 
            "estDur", estdur, "notes", notes, "supporter", supporter, 
            "bz", bz, "project", project, "team", team]

hashed変数は必要ありません。

于 2012-10-11T14:56:36.933 に答える