ruby - 如何根据索引从 each_with_index 内的数组中打印内容?
问题描述
我有两个数组:
a = [1, 2, 3]
b = [{:item => 'apple', :quantity => 92}, {:item => 'banana', :quantity => 43}, {:item => 'kiwi', :quantity => 55}]
我想要这样的输出:
1. apple 92 2. banana 43 3. kiwi 55
现在,由于 array 中的每个项目都与 arrayb
中的值的顺序对齐很重要a
,我决定编写一个each_with_index
循环,以便能够从 array 中提取所需位置的数据b
:
a.each_with_index do |a_value, i|
puts a_value
puts '.'
puts b[i][:item]
puts b[i][:quantity]
end
但我收到了这个错误:
NoMethodError: undefined method `[]' for nil:NilClass
from (irb):8:in `block in irb_binding'
from (irb):8:in `each'
from (irb):8:in `each_with_index'
from (irb):8
from C:/RailsInstaller/Ruby2.3.3/bin/irb.cmd:19:in `<main>'
我觉得这很奇怪,因为那个位置的哈希不是空的。
如果我在该位置打印数组的全部内容,它会起作用,例如:
a.each_with_index do |a_value, i|
puts b[i]
end
这使:
{:item => 'apple', :quantity => 92}
{:item => 'banana', :quantity => 43}
{:item => 'kiwi', :quantity => 55}
但我不能在哈希中指定一个键来打印内容?那是怎么回事?
解决方案
但我不能在哈希中指定一个键来打印内容?那是怎么回事?
当然,这没有意义。如果你有一个哈希,你可以得到它的键/值。这里的问题是你没有哈希。相反,您的其中一个b[i]
是 nil (这会触发错误)。
p b[i]
通过使用而不是打印它们来检查这一点puts b[i]
。
推荐阅读
- modelica - 如何在 Modelica 中修复“范围内未找到变量”
- r - 在ggplot2 R上的点之间画一条线
- javascript - 如何从一个组件到另一个组件获得价值?
- python - 烧瓶返回重定向()调用不重定向用户
- python - 在 Pandas 中将多个值替换为缺失值(无)
- android - 在 Android(多个设备)上使用受信任的 Web 活动时出现 NullPointerException
- python - 验证检查一个字符串是否在另一个字符串旁边(逐行)
- java - java中sql准备语句的问题
- python - 覆盖 django 管理员身份验证
- git - Git 仍然认为它在旧版本的分支上