【发布时间】:2016-08-11 18:17:32
【问题描述】:
我试图弄清楚如何使用define_method(或任何其他方法)生成数组名称,因为我的方法循环遍历数组并将每个散列元素转换为JSON。现在,我的数据是一系列哈希数组,只是转储到一个文件中,不包含在任何更大的数组中。
data_arrays = [{"key1":"value1"}, {"key2":"value2"}]
[{"key3":"value3"}, ("key4":"value4")]
[{"key5":"value5"}, ("key6":"value6")]
我尝试使用的代码如下所示。基本上,我希望将每个哈希数组转换为 JSON 并分配一个新名称,如 json_array_1、jason_array_2 等。
data_arrays.each do |element|
for (i = 0; i < data_array.length; i+=1) do
define_method("json_array_#{i}") do
json_array_[i] = element.to_json
end
end
end
我知道这一行:for (i = 0; i < data_array.length; i+=1) do 根本不是真正的 Ruby 或好的代码。但是我需要一种方法来遍历循环,同时使变量“i”可以插入到 json_array 名称中。任何人都可以给我任何让这段代码工作的指示吗?我可能想太多了,让事情变得比实际更难。
【问题讨论】:
-
您的问题表述得不够清楚,所以我只能在一些小事上提供帮助。 (1) 获取数组索引使用
data_arrays.each_with_index do |element, i|(2) 动态调用方法使用send("json_array_#{i}=", element.to_json) -
您对
data_arrays的定义有几个错误。看看我在回答中是如何定义的。