在ruby中将项添加到哈希中,为什么要覆盖项?
我有以下代码:在ruby中将项添加到哈希中,为什么要覆盖项?,ruby,Ruby,我有以下代码: chartJsObject = [{label: "Label Stuff", datasets: []}] i = 0 while i < 5 do chartJsObject[i][:datasets] << [rand(10), rand(10)] if chartJsObject[i] i+=1 end while循环中我做错了什么?chart\u js\u对象在索引0处只有一个元素。因此,每次对chart\u js\u object[i]
chartJsObject = [{label: "Label Stuff", datasets: []}]
i = 0
while i < 5 do
chartJsObject[i][:datasets] << [rand(10), rand(10)] if chartJsObject[i]
i+=1
end
while循环中我做错了什么?
chart\u js\u对象在索引0处只有一个元素。因此,每次对chart\u js\u object[i]
的调用都返回nil
,其中i
不是零。这将导致一个错误,除了操作规定末尾的条件导致代码忽略第一次迭代之后的每个迭代之外
让我们使用变量命名。我会翻译成斯内克的案子。而且,while
循环在Ruby中非常罕见。要执行特定次数的操作,只需使用#times
方法即可
因此,我们最终得出以下结论:
>> 5.times { chart_js_object[0][:datasets] << [rand(10), rand(10)] }
>> chart_js_object
=> [{:label=>"Label Stuff", :datasets=>[[0, 4], [6, 0], [5, 4], [4, 6], [8, 6]]}]
>5.times{chart_js_object[0][:dataset]>chart_js_object
=>[{:label=>“label Stuff”,:数据集=>[[0,4],[6,0],[5,4],[4,6],[8,6]}]
由于chartJsObject
数组只有一个基准,因此数组计数为1
,数组索引为chartJsObject[0]
。循环体只运行一次,因为chartJsObject
数组中只有一个基准,并且您将条件指定为
if chartJsObject[i]
这就是为什么它会给你这样的结果
if chartJsObject[i]